[英]Apache Spark Task not Serializable when Class exends Serializable
[英]Task not serializable when class is serializable
我在 Scala 中有以下 class
case class A
(a:Int,b:Int) extends Serializable
當我在 Spark 2.4 中嘗試時。 (通過數據磚)
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()
但到目前為止還沒有運氣。
有時這會在 DataBricks 上間歇性發生。 最煩人。
重新啟動集群並重試,我有時會遇到此錯誤,重新啟動后它沒有發生。
您可以使用您擁有的案例 class 直接將文件解析為Dataset
。
case class A(a:Int,b:Int) extends Serializable
val testRDD = spark.sparkContext.textFile("file:///test_file.csv")
val testDS = testRDD.map( line => line.split(",")).map(line_cols => A(line_cols(0).toInt, line_cols(1).toInt) ).toDS()
#res23: org.apache.spark.sql.Dataset[A] = [a: int, b: int]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.