【发布时间】:2020-07-10 07:37:35
【问题描述】:
我在 Scala 中有以下课程
case class A
(a:Int,b:Int) extends Serializable
当我尝试使用 Spark 2.4 时。 (通过 Databricks)
val textFile = sc.textFile(...)
val df = textFile.map(_=>new A(2,3)).toDF()
(编辑:当我调用 df.collect() 或注册为表时发生错误)
我收到org.apache.spark.SparkException: Task not serializable
我错过了什么?
我尝试添加编码器:
implicit def AEncoder: org.apache.spark.sql.Encoder[A] =
org.apache.spark.sql.Encoders.kryo[A]
和
import spark.implicits._
import org.apache.spark.sql.Encoders
编辑:我也试过:
val df = textFile.map(_=>new A(2,3)).collect()
但到目前为止还没有运气。
【问题讨论】:
-
真正的集群版还是社区版?这到底有什么意义?
-
@thebluephantom 社区版。这只是一个示例,我有一个通过正则表达式等提取的复杂数据类型。否则我需要创建一个列数组(20+),手动映射列。我以为使用 Type 很简单?!
-
我无法得到错误,只是尝试在 CE 上。我也不需要新的。重新启动集群并重试,我有时会遇到此错误,重新启动后它没有发生。任务不可序列化。你能确认一下吗?
-
我在等5。
-
@thebluephantom 我仍然收到错误,但是当我调用收集或注册为表格时。
标签: scala apache-spark databricks