Ошибка сериализации задачи при использовании UDF - PullRequest
0 голосов
/ 02 мая 2018

Я использую IntelliJ IDEA для выполнения кода, показанного ниже. Содержание df следующее:

+------+------+
|nodeId|   p_i|
+------+------+
|    26|0.6914|
|    29|0.6914|
|   474|   0.0|
|    65|0.4898|
|   191|0.4445|
|   418|0.4445|

Я получаю ошибку сериализации задачи в строке result.show() при запуске этого кода:

class MyUtils extends Serializable {
  def calculate(spark: SparkSession,
              df: DataFrame): DataFrame = {

    def myFunc(a: Double): String = {
      var result: String = "-"
      if (a > 1) {
        result = "A"
      } 
      return result
    }

    val myFuncUdf = udf(myFunc _)

    val result = df.withColumn("role", myFuncUdf(df("a")))

    result.show()

    result
  }
}

Почему я получаю эту ошибку?

Обновление:

Вот как я запускаю код:

object Processor extends App {
    // ...
    val mu = new MyUtils()
    var result = mu.calculate(spark, df)
}

1 Ответ

0 голосов
/ 02 мая 2018

Мне пришлось добавить extends Serializable к спецификации класса MyUtils.

...