TL;DR:运行 spark-shell(驱动程序)的 Spark 是否绝对有必要与 Spark 的 master版本完全相同?
我正在使用Spark 1.5.0通过 spark-shell连接到Spark 1.5.0-cdh5.5.0 :
spark-shell --master spark://quickstart.cloudera:7077 --conf "spark.executor.memory=256m"
它连接、实例化 SparkContext 和 sqlContext 很好。如果我运行:
sqlContext.sql("show tables").show()
它按预期显示了我的所有表格。
但是,如果我尝试从表中访问数据:
sqlContext.sql("select * from t1").show()
我收到此错误:
java.io.InvalidClassException: org.apache.spark.sql.catalyst.expressions.AttributeReference; local class incompatible: stream classdesc serialVersionUID = 370695178000872136, local class serialVersionUID = -8877631944444173448
它说serialVersionUID不匹配。我的假设是这个问题是由试图连接两个不同版本的 spark 引起的。如果我是对的,有什么想法吗?