可以在 Spark Transformer 上设置自定义参数

Posibility of setting custom param on Spark Transformer

我正在使用 spark 管道,发现自己经常遇到这样一种情况:我有一堆 SQLTransformer 在管道中做不同的事情,如果不查看整个语句就无法真正理解它们的作用。

我想为每个转换器类型添加一些简单的文档或标签组件(当转换器被保存时它们将被保留)并且可以在以后需要时检索。

所以基本上是这样的。

s = SQLTransformer()
s.tag = "basic target generation"
s.save("tmp")

s2 = SQLTransformer.load("tmp")
print(s2.tag)

s = SQLTransformer()
s.setParam(tag="basic target generation")
s.save("tmp")

s2 = SQLTransformer.load("tmp")
print(s2.getParam("tag"))

我可以看到我现在不能做任何一个,因为参数对象被锁定并且我似乎无法修改除声明之外的现有对象或添加新对象。但是我能做些什么来获得这样的功能吗?

我正在使用 Spark 2.1.1 python。

不是没有实现你自己的 Scala Transformer 扩展 SQLTransformer 然后编写 Python 接口(或编写独立的 Python Transformer - How to Roll a Custom Estimator in PySpark mllib).

但是如果你

would like to add maybe some simple documentation

您可以在声明中添加注释:

s = SQLTransformer(statement = """
    -- This is a transformer that selects everything
    SELECT * FROM __THIS__""")

print(s.getStatement())

##    -- This is a transformer that selects everything
##    SELECT * FROM __THIS__