TL;DR: 运行 spark-shell(驱动程序)的 Spark 是否必须与 Spark 的主节点 完全相同?
我正在使用 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
它指出serialVersionUIDs(序列化版本号)不匹配。我猜测问题是由于尝试连接两个不同版本的spark引起的。如果我是正确的,你有什么想法吗?