私はSparkでHDFSファイルにアクセスしようとしています。すべては私がローカルモードでスパークを実行すると、正常に動作すなわちSparkスタンドアロンクラスタモードでHDFSファイルにアクセスする方法は?
SparkSession.master("local")
と
hdfs://localhost:9000/$FILE_PATH
でHDFSファイルへのアクセスを得る。しかし、私は、スタンドアロンクラスタモードでスパークを実行しようとしていたとき、すなわち
SparkSession.master("spark://$SPARK_MASTER_HOST:7077")
エラーが
java.lang.ClassCastException: cannot assign instance of java.lang.invoke.SerializedLambda to field org.apache.spark.api.java.JavaPairRDD$$anonfun$toScalaFunction$1.fun$1 of type org.apache.spark.api.java.function.Function in instance of org.apache.spark.api.java.JavaPairRDD$$anonfun$toScalaFunction$1
スロー
これまでのところ、私は start-dfs.sh をHadoopに持っていて、実際にはSparkに何も設定していません。 SparkとHadoopが同じクラスタマネージャを使用し、HDFSファイルにアクセスできるように、YARNクラスタマネージャを使用してSparkを実行する必要がありますか?
私はtutorialspoint https://www.tutorialspoint.com/hadoop/hadoop_enviornment_setup.htmに続いてHadoopで設定し、spark-env.shでHADOOP_CONF_DIRを指定しようとしましたが、動作していないようで、同じエラーがスローされます。私はいくつかの他の設定が欠けていますか?
ありがとうございます!
EDIT
初期のHadoopのバージョンは2.8.0で、スパークバージョンはHadoopの2.7と2.1.1です。 hadoop-2.7.4をダウンロードしようとしましたが、同じエラーが依然として存在します。
質問hereは、hdfsの問題を引き起こすのではなく、Java構文の問題としてこれを示唆しています。私はこのアプローチを試し、ここでエラーが解決するかどうかを見ていきます。
これは、Scalaのバージョン管理の問題によく似ています。 –
@YuvalItzchakovこのような迅速な対応に感謝します!私はスカラのバージョンを再確認します。 SparkとScala、SparkのScalaとHadoopのScalaの間のバージョンの不一致を示唆していますか?私はspark-2.1.1-bin-hadoop2.7とhadoop-2.8.0をダウンロードしましたが、代わりにhadoop 2.7.0を試すべきですか? –
私はhadoop2.7と一緒に行くだろう。 Scalaのバージョンが2.11(Sparkがコンパイルされているもの)であることを確認してください。 –