Scala Spark-任务不可序列化
我有以下代码,其中错误在sc.parallelize()上Scala Spark-任务不可序列化,scala,apache-spark,Scala,Apache Spark,我有以下代码,其中错误在sc.parallelize()上 val pairs=ret.cartesian(ret) .地图{ 案例((k1,v1),(k2,v2))=>((k1,k2),(v1.toList,v2.toList)) } for(pairfor comprehension就是做一个pairs.map() RDD操作由工作人员执行,要让他们执行该操作,您发送给他们的任何内容都必须是可序列化的。SparkContext连接到主服务器:它负责管理整个集群 如果你想创建一个RDD,你必须
val pairs=ret.cartesian(ret)
.地图{
案例((k1,v1),(k2,v2))=>((k1,k2),(v1.toList,v2.toList))
}
for(pairfor comprehension就是做一个pairs.map()
RDD操作由工作人员执行,要让他们执行该操作,您发送给他们的任何内容都必须是可序列化的。SparkContext连接到主服务器:它负责管理整个集群
如果你想创建一个RDD,你必须知道整个集群(这是第二个“D”-分布式),所以你不能在worker上创建一个新的RDD。而且你可能不想把每一行成对地变成一个RDD(并且每一行都有相同的名称!)
很难从代码中看出您想要做什么,但它可能看起来是这样的
val test = pairs.map( r => r._2._1)
这将是一个RDD,其中每一行都是v1中的内容。toList的您的第一个映射似乎是一个noop。您打算对第二个映射做什么?第一个映射只是重新格式化数据,第二个映射用于从列表生成RDD。它在第二个映射总是失败,因为我无法序列化sc。对的类型是什么?
val test = pairs.map( r => r._2._1)