我正在通过扩展Transformer来编写自定义spark.ml转换器。
一切都很好,但我无法保存此变换器的这个实例,因为它不像所有变换器那样从DefaultParamsWritable
特征延伸,我不能直接混合DefaultParamsWritable
特征作为它是特定于org.apache.spark.ml
的包。
一种解决方法是将您的课程置于org.apache.spark.ml
之下。这是实现这一目标的唯一途径吗?更好的解决方案?
答案 0 :(得分:1)
终于找到了这样做的方法!
所以诀窍有两个步骤。
如果你计划编译一个变量,它有一些需要在保存时写入的变量,那么它需要是一个扩展org.apache.spark.ml.param.Params类的特性。
HasInputCol等常见特性是spark ml软件包的私有特性,因此您需要在自己选择的公共util包中重新实现这些特性。 (在他们的JIRA板上有这些公开的bug,但还没有确定日期。)
但是一旦你有了这个,那么你的变换器可以简单地实现Params类型的这些特性以及DefaultParamsWritable,并且你的变换器现在可以保持。
真的希望这是在某处记录的。