【发布时间】:2018-07-06 10:15:41
【问题描述】:
在 Spark 应用程序 (Spark 2.1) 中,我试图发送一个案例类作为要在执行程序上运行的函数的输入参数
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 类状态没有被序列化,输出结果为 null_even null_odd ...
你能帮我理解我做错了什么吗?
【问题讨论】:
标签: serialization apache-spark-sql case-class