如何创建自定义可写转换器?

Posted

技术标签:

【中文标题】如何创建自定义可写转换器?【英文标题】:How to create custom writable transformer? 【发布时间】:2016-03-31 17:29:29 【问题描述】:

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

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

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

【问题讨论】:

你读过这篇文章吗? How to create a custom transformer @AlbertoBonsanto 参考这个comment,它还建议从 DefaultParamsWritable 扩展。 PS - 与 DefaultParamsWritable 相同,您不能直接从 MLWriter 扩展。 【参考方案1】:

终于找到办法了!

所以诀窍有两个步骤。

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

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

但是一旦你有了这个,那么你的转换器就可以简单地实现这些参数类型的特征和 DefaultParamsWritable,并且你的转换器现在是可持久的。

真希望这被记录在某个地方。

【讨论】:

以上是关于如何创建自定义可写转换器?的主要内容,如果未能解决你的问题,请参考以下文章

如何使方法 JSON 可序列化以在自定义 Pyspark 转换器中使用

如何在 @DataMongoTest 中使用自定义转换器?

在python中为Hadoop Map Reduce创建自定义可写键/值类型?

如何将自定义 json 转换为自适应卡片 json 格式

如何将 uitextview 内容转换为自定义大小的图像?

09.AutoMapper 之自定义类型转换器(Custom Type Converters)