如何创建自定义可写变压器?

时间:2016-03-31 17:29:30

标签: scala apache-spark apache-spark-ml

我正在通过扩展Transformer来编写自定义spark.ml转换器。

一切都很好,但我无法保存此变换器的这个实例,因为它不像所有变换器那样从DefaultParamsWritable特征延伸,我不能直接混合DefaultParamsWritable特征作为它是特定于org.apache.spark.ml的包。

一种解决方法是将您的课程置于org.apache.spark.ml之下。这是实现这一目标的唯一途径吗?更好的解决方案?

1 个答案:

答案 0 :(得分:1)

终于找到了这样做的方法!

所以诀窍有两个步骤。

如果你计划编译一个变量,它有一些需要在保存时写入的变量,那么它需要是一个扩展org.apache.spark.ml.param.Params类的特性。

HasInputCol等常见特性是spark ml软件包的私有特性,因此您需要在自己选择的公共util包中重新实现这些特性。 (在他们的JIRA板上有这些公开的bug,但还没有确定日期。)

但是一旦你有了这个,那么你的变换器可以简单地实现Params类型的这些特性以及DefaultParamsWritable,并且你的变换器现在可以保持。

真的希望这是在某处记录的。