Apache Spark: передать столбец в качестве параметра Transformer - PullRequest
1 голос
/ 16 октября 2019

Я определил конвейерный трансформатор следующим образом:

class MyTransformer(condition: Column) extends SparkTransformer { 
   override def transform(dataset: Dataset[_]): DataFrame = {...}
 }

, который затем используется в конвейере:

val pipeline = new Pipeline()
pipeline.setStages(Array(new MyTransformer(col("test).equals(lit("value"))))
pipeline.fit(df).transform(mydf)

В моем преобразователе я хочу применить преобразование только к строкамкоторые проверяют условие.

Это приводит к проблеме сериализации:

Serialization stack:
- object not serializable (class: org.apache.spark.sql.Column, value: (test = value))
- field (class: my.project.MyTransformer, name: condition, type: class org.apache.spark.sql.Column)
- ...

В моем понимании, Transformer сериализуется для отправки исполнителям, поэтому каждый параметр должен быть сериализуемым.

Как я могу обойти это? Есть ли обходной путь?

Thx.

...