spark bin/spark-submitを使用してアプリケーションを実行しようとしています。ローカルファイルシステム内でアプリケーションjarを参照すると、動作します。ただし、アプリケーションjarをディレクトリにコピーするとhdfsでは、次の例外が発生します。
警告:リモートjar hdfs:// localhost:9000/user/hdfs/jars/simple-project-1.0-SNAPSHOT.jarをスキップします。 Java.lang.ClassNotFoundException:com.example.SimpleApp
コマンドは次のとおりです。
$ ./bin/spark-submit --class com.example.SimpleApp --master local hdfs://localhost:9000/user/hdfs/jars/simple-project-1.0-SNAPSHOT.jar
Hadoopバージョン2.6.0を使用しています。sparkバージョン1.2.1
私が使っていたとき、それが私のために働いた唯一の方法
-マスターヤーンクラスター
Spark-jobがHDFSライブラリにアクセスできるようにするには、ジョブをクラスターモードで実行する必要があります。
$SPARK_HOME/bin/spark-submit \
--deploy-mode cluster \
--class <main_class> \
--master yarn-cluster \
hdfs://myhost:8020/user/root/myjar.jar
また、Spark JIRAはまだサポートされていないクライアントモードで発生します。
SPARK-1064 :クライアントモードでHDFSアプリケーションのダウンロードをサポートspark submit
回避策があります。 HDFS(アプリケーションjarを含む)のディレクトリをローカルディレクトリとしてマウントできます。
私は同じことをしました(Azure BLOBストレージを使用していますが、HDFSでも同様のはずです)
azure wasbのコマンド例
Sudo mount -t cifs //{storageAccountName}.file.core.windows.net/{directoryName} {local directory path} -o vers=3.0,username={storageAccountName},password={storageAccountKey},dir_mode=0777,file_mode=0777
ここで、spark submitコマンドで、上記のコマンドからのパスを指定します
$ ./bin/spark-submit --class com.example.SimpleApp --master local {local directory path}/simple-project-1.0-SNAPSHOT.jar