如何使用 Spark-submit configuration: jars,packages:in cluster mode?

how to use Spark-submit configuration: jars,packages:in cluster mode?

在集群模式(yarn-cluster)中使用 Spark-submit 时,jar 和包配置让我感到困惑:对于 jar,我可以将它们放在 HDFS 中,而不是放在本地目录中。但是对于包,因为它们是用 Maven 和 HDFS 构建的,所以它不能工作。我的方式如下:

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

谁能告诉我如何在集群模式下使用 jar 和包?我的方法有什么问题?

您对 --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

如果您坚持使用自己的 jar,可以通过 --repositories 提供。参数的值为

Comma-separated list of remote repositories to search for the Maven coordinates specified in packages.

例如,您的情况可能是

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