我使用Spark和MongoDB,因此依赖于mongo-hadoop
驱动程序。由于对原始问题here的输入,我得到了一些工作。
我的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
它有效,但给了我以下警告信息
警告:本地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
有人可以解释一下这里发生了什么吗?我在这里查看了类似的问题,引用了相同的警告,并搜索了文档。
通过设置选项,它们是否存储为环境变量或其他内容?我很高兴它有效,但我担心我不能完全理解为什么有时而不是其他人。
答案 0 :(得分:2)
问题是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
答案 1 :(得分:1)
添加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,因此不应该发出警告。