通过spark submit将额外的jar传递给spark

50few1ms  于 2021-06-02  发布在  Hadoop
关注(0)|答案(2)|浏览(409)

我在mongodb中使用spark,因此依赖于 mongo-hadoop 司机。多亏我在这里输入了我原来的问题,我的工作才得以顺利进行。
我的spark工作正在运行,但是,我收到了一些我不明白的警告。当我运行这个命令时

$SPARK_HOME/bin/spark-submit --driver-class-path /usr/local/share/mongo-hadoop/build/libs/mongo-hadoop-1.5.0-SNAPSHOT.jar:/usr/local/share/mongo-hadoop/spark/build/libs/mongo-hadoop-spark-1.5.0-SNAPSHOT.jar --jars /usr/local/share/mongo-hadoop/build/libs/mongo-hadoop-1.5.0-SNAPSHOT.jar:/usr/local/share/mongo-hadoop/spark/build/libs/mongo-hadoop-spark-1.5.0-SNAPSHOT.jar my_application.py

它工作,但给我以下警告信息
警告:local jar/usr/local/share/mongo-hadoop/build/libs/mongo-hadoop-1.5.0-snapshot.jar:/usr/local/share/mongo-hadoop/spark/build/libs/mongo-hadoop-spark-1.5.0-snapshot.jar不存在,正在跳过。
当我试图让它工作时,如果我在提交作业时忽略了这些路径,它将不会运行。但现在,如果我忽略这些路径,它确实会运行

$SPARK_HOME/bin/spark-submit  my_application.py

有人能解释一下这是怎么回事吗?我已经在这里查看了引用相同警告的类似问题,并搜索了文档。
通过设置一次选项,它们是否存储为环境变量或其他内容?我很高兴它能起作用,但我很谨慎,我不完全明白为什么有时会这样,而不是其他人。

vktxenjb

vktxenjb1#

在zero323答案之上添加
我认为更好的办法是

$SPARK_HOME/bin/spark-submit \
--driver-class-path  $(echo /usr/local/share/mongo-hadoop/build/libs/*.jar | tr ' ' ',') \
--jars $(echo /usr/local/share/mongo-hadoop/build/libs/*.jar | tr ' ' ',') my_application.py

在这种方法中,您不会在类路径中错误地错过任何jar,因此不应该出现任何警告。

1bqhqjot

1bqhqjot2#

问题是 CLASSPATH 应该用结肠分隔,而 JARS 应使用逗号分隔:

$SPARK_HOME/bin/spark-submit \
--driver-class-path /usr/local/share/mongo-hadoop/build/libs/mongo-hadoop-1.5.0-SNAPSHOT.jar:/usr/local/share/mongo-hadoop/spark/build/libs/mongo-hadoop-spark-1.5.0-SNAPSHOT.jar \
--jars /usr/local/share/mongo-hadoop/build/libs/mongo-hadoop-1.5.0-SNAPSHOT.jar,/usr/local/share/mongo-hadoop/spark/build/libs/mongo-hadoop-spark-1.5.0-SNAPSHOT.jar my_application.py

相关问题