Задача не сериализуемое исключение при преобразовании набора данных в красный - PullRequest
1 голос
/ 29 марта 2020

У меня есть DataSet, который выглядит следующим образом:

dataset.show(10)

|   features|
+-----------+
|[14.378858]|
|[14.388442]|
|[14.384361]|
|[14.386358]|
|[14.390068]|
|[14.423256]|
|[14.425567]|
|[14.434074]|
|[14.437667]|
|[14.445997]|
+-----------+
only showing top 10 rows

Но, когда я пытаюсь преобразовать это DataSet в RDD, используя .rdd, как показано ниже:

val myRDD = dataset.rdd

Я получаю исключение, как показано ниже:

Task not serializable: java.io.NotSerializableException: scala.runtime.LazyRef
Serialization stack:
    - object not serializable (class: scala.runtime.LazyRef, value: LazyRef thunk)
    - element of array (index: 2)
    - array (class [Ljava.lang.Object;, size 3)
    - field (class: java.lang.invoke.SerializedLambda, name: capturedArgs, type: class [Ljava.lang.Object;)
    - object (class java.lang.invoke.SerializedLambda, SerializedLambda[capturingClass=class org.apache.spark.sql.catalyst.expressions.ScalaUDF, functionalInterfaceMethod=scala/Function1.apply:(Ljava/lang/Object;)Ljava/lang/Object;, implementation=invokeStatic org/apache/spark/sql/catalyst/expressions/ScalaUDF.$anonfun$f$2:(Lscala/Function1;Lorg/apache/spark/sql/catalyst/expressions/Expression;Lscala/runtime/LazyRef;Lorg/apache/spark/sql/catalyst/InternalRow;)Ljava/lang/Object;, instantiatedMethodType=(Lorg/apache/spark/sql/catalyst/InternalRow;)Ljava/lang/Object;, numCaptured=3])
    - writeReplace data (class: java.lang.invoke.SerializedLambda)

Как мне это исправить?

1 Ответ

1 голос
/ 29 марта 2020
java.io.NotSerializableException: scala.runtime.LazyRef

Четко указывает на проблему несоответствия версий во время выполнения. Вы не упомянули свою версию Spark ...

Это версия scala, версия понижена до scala 2.11, она должна работать

См. Эту таблицу версий из этого url https://mvnrepository.com/artifact/org.apache.spark/spark-core и измените версию scala соответствующим образом.

enter image description here

...