我正在尝试使用bin / spark-submit运行spark应用程序。当我在我的本地文件系统中引用我的应用程序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,火花版本1.2.1
答案 0 :(得分:19)
当我使用
时,它对我有用的唯一方式- 主纱簇
答案 1 :(得分:8)
要使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-10643:支持在客户端模式下提交HDFS应用程序spark submit
答案 2 :(得分:1)
有一种解决方法。您可以将目录安装在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
答案 3 :(得分:-1)
是的,它必须是本地文件。我认为这只是答案。