TL;DR : Spark シェル (ドライバー) を実行している 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
serialVersionUIDが一致しないと表示されます。私の仮説は、問題は 2 つの異なるバージョンの spark を接続しようとしたことが原因であるというものです。私が正しい場合、何かアイデアはありますか?