在Spark Transformer上设置自定义参数的可能性

时间:2018-08-02 10:22:24

标签: apache-spark pyspark pipeline apache-spark-ml

我正在使用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结合使用。

1 个答案:

答案 0 :(得分:0)

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

但是如果你

  

想添加一些简单的文档

您可以在语句中添加注释:

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__