我将ML管道与各种基于UDF的定制转换器一起使用。我正在寻找一种对这个管道进行序列化/反序列化的方法。
我使用以下方法对PipelineModel进行序列化
ObjectOutputStream.write()
但是,每当我尝试反序列化管道时,我都会遇到:
java.lang.ClassNotFoundException: org.sparkexample.DateTransformer
DateTransformer在哪里是我的自定义转换器。是否有实现适当序列化的方法/接口(interface)?
我发现那里
MLWritable
我的类(class)可能实现的接口(interface)(DateTransformer扩展了Transfrormer),但是找不到有用的示例。
最佳答案
如果您使用的是Spark 2.x +,请使用DefaultParamsWritable扩展您的转换器
例如
class ProbabilityMaxer extends Transformer with DefaultParamsWritable{
然后创建一个带有字符串参数的构造函数
def this(_uid: String) {
this()
}
最后,为了成功阅读,请添加一个伴随类
object ProbabilityMaxer extends DefaultParamsReadable[ProbabilityMaxer]
我已经在我的生产服务器上工作了。上载时,我将在项目中添加gitlab链接
关于serialization - 有什么方法可以序列化Spark ML Pipeline中的自定义Transformer,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40284214/