2016-08-12 165 views
0

当在集群模式下使用Spark-submit(yarn-cluster)时,jar和packages配置会让我困惑:对于jar,我可以将它们放在HDFS中,而不是放在本地目录中。但是对于包来说,因为它们是用Maven构建的,而HDFS则无法工作。我的方法如下图所示:如何使用Spark-submit配置:jar,packages:在集群模式下?

spark-submit --jars hdfs:///mysql-connector-java-5.1.39-bin.jar --driver-class-path /home/liac/test/mysql-connector-java-5.1.39/mysql-connector-java-5.1.39-bin.jar --conf "spark.mongodb.input.uri=mongodb://192.168.27.234/test.myCollection2?readPreference=primaryPreferred" --conf "spark.mongodb.output.uri=mongodb://192.168.27.234/test.myCollection2" --packages com.mongodb.spark:hdfs:///user/liac/package/jars/mongo-spark-connector_2.11-1.0.0-assembly.jar:1.0.0 --py-files /home/liac/code/diagnose_disease/tool.zip main_disease_tag_spark.py --master yarn-client 

发生错误:

`Exception in thread "main" java.lang.IllegalArgumentException: requirement failed: Provided Maven Coordinates must be in the form 'groupId:artifactId:version'. The coordinate provided is: com.mongodb.spark:hdfs:///user/liac/package/jars/mongo-spark-connector_2.11-1.0.0-assembly.jar:1.0.0 

任何人都可以告诉我如何使用群集模式瓶和包?我的方式有什么问题?

+0

在你的脚本:'--master纱client'? – ShuaiYuan

+0

是的,我也尝试' - 主纱群' – lac

回答

0

您使用--packages说法是错误的:

--packages com.mongodb.spark:hdfs:///user/liac/package/jars/mongo-spark-connector_2.11-1.0.0-assembly.jar:1.0.0 

它需要在groupId:artifactId:version形式作为输出显示。你不能使用它的URL。

using mongoDB with spark与内置储存库支持的一个例子:

$SPARK_HOME/bin/spark-shell --packages org.mongodb.spark:mongo-spark-connector_2.11:1.0.0 

如果你坚持要用自己的罐子,你可以通过--repositories提供。参数的值是

逗号分隔的远程存储库列表,用于搜索包中指定的Maven坐标。

例如,在你的情况下,它可能是

--repositories hdfs:///user/liac/package/jars/ --packages org.mongodb.spark:mongo-spark-connector_2.11:1.0.0 
+0

谢谢!帮助我很多。 – lac