【发布时间】:2019-06-25 16:46:21
【问题描述】:
我有一堂课:
class DataLoader {
def rdd2RddTransform(
ss: SparkSession,
inputRDD: RDD[GenericRecord]): RDD[GenericRecord] = {
inputRDD.asInstanceOf[RDD[TrainingData]]
.map(reformatTrainingData)
}
private def reformatTrainingData: TrainingData => ReFormatedData
= (trainingData: TrainingData) => {func implement}
}
它工作得很好,但它抛出了一个异常:
org.apache.spark.SparkException: Task not serializable我对RDD的地图做了一点小改动后:
inputRDD.asInstanceOf[RDD[TrainingData]].map(reformatTrainingData(_))
我认为这两个功能应该相同,但似乎并非如此。为什么它们不同?
【问题讨论】:
-
我怀疑这是由于 Scala 中的函数和方法之间的区别。您能否发布包含序列化调试信息的堆栈跟踪部分?示例见stackoverflow.com/questions/43592742/…
标签: scala apache-spark