Case Class Spark 中的序列化
Case Class serialization in Spark
在 Spark 应用程序 (Spark 2.1) 中,我正在尝试发送一个案例 class 作为函数的输入参数,该函数的目的是 运行 执行程序
object TestJob extends App {
val appName = "TestJob"
val out = "out"
val p = Params("my-driver-string")
val spark = SparkSession.builder()
.appName(appName)
.getOrCreate()
import spark.implicits._
(1 to 100).toDF.as[Int].flatMap(i => Dummy.process(i, p))
.write
.option("header", "true")
.csv(out)
}
object Dummy {
def process(i: Int, v:Params): Vector[String] = {
Vector { if( i % 2 == 1) v + "_odd" else v + "_even" }
}
}
case class Params(v: String)
当我 运行 它与 master local[*] 一切顺利时,当 运行 在集群中时,Params class 状态没有被序列化并且输出结果在
null_even
null_odd
...
你能帮我理解我做错了什么吗?
谷歌搜索我发现这个 post 给了我解决方案:
最终问题是由于扩展应用程序
在 Spark 应用程序 (Spark 2.1) 中,我正在尝试发送一个案例 class 作为函数的输入参数,该函数的目的是 运行 执行程序
object TestJob extends App {
val appName = "TestJob"
val out = "out"
val p = Params("my-driver-string")
val spark = SparkSession.builder()
.appName(appName)
.getOrCreate()
import spark.implicits._
(1 to 100).toDF.as[Int].flatMap(i => Dummy.process(i, p))
.write
.option("header", "true")
.csv(out)
}
object Dummy {
def process(i: Int, v:Params): Vector[String] = {
Vector { if( i % 2 == 1) v + "_odd" else v + "_even" }
}
}
case class Params(v: String)
当我 运行 它与 master local[*] 一切顺利时,当 运行 在集群中时,Params class 状态没有被序列化并且输出结果在 null_even null_odd ...
你能帮我理解我做错了什么吗?
谷歌搜索我发现这个 post 给了我解决方案:
最终问题是由于扩展应用程序