spark join 失败并出现异常 "ClassNotFoundException: org.apache.spark.rdd.RDD$" 但在粘贴到 Hadoop 集群的 spart-shell 时运行

spark join fails with exception "ClassNotFoundException: org.apache.spark.rdd.RDD$" but runs when pasting into spart-shell of Hadoop Cluster

我正在尝试使用连接根据来自另一个文件(列表)的值从一个文件(事实)中过滤记录。

case class CDR(no:Int,nm:String)
val facts = sc.textFile("/temp_scv/a.csv").map( (line) => { val cols = line.split(",");new CDR(cols(0).toInt,cols(1)); }).keyBy( (cdr:CDR) => cdr.no)
val list = sc.textFile("/temp_scv/b.csv").keyBy( (no) => no.toInt)
val filtered = facts.join(list)

当我将其打包为 jar 并使用 spark-submit 在 Hadoop cluster 上执行时,它失败并出现异常

ClassNotFoundException: org.apache.spark.rdd.RDD$

但是,当我将相同的代码粘贴到 Hadoop cluster 上的 spark-shell 时运行良好。

版本不匹配。我在集群上使用 Spark 1.2.0。代码是用 sark-core 版本 1.3.0

编译的

使用相同的 spark-core 版本编译代码解决了问题。