Spark-Submit: --packages vs --jars

2022-09-02 09:20:50

有人可以解释火花提交脚本之间的区别吗?--packages--jars

nohup ./bin/spark-submit   --jars ./xxx/extrajars/stanford-corenlp-3.8.0.jar,./xxx/extrajars/stanford-parser-3.8.0.jar \
--packages datastax:spark-cassandra-connector_2.11:2.0.7 \
--class xxx.mlserver.Application \
--conf spark.cassandra.connection.host=192.168.0.33 \
--conf spark.cores.max=4 \
--master spark://192.168.0.141:7077  ./xxx/xxxanalysis-mlserver-0.1.0.jar   1000  > ./logs/nohup.out &

另外,如果依赖项位于我的应用程序中,我是否需要配置?(我问,因为我只是通过更改版本来炸毁我的应用程序,而忘记在--packagespom.xml--packagespom.xml)

我目前正在使用,因为jars很大(超过100GB),因此减慢了阴影jar编译的速度。我承认我不确定为什么我使用,除了因为我正在关注datastax文档--jars--packages


答案 1

如果你这样做,它将显示:spark-submit --help

--jars JARS                 Comma-separated list of jars to include on the driver
                              and executor classpaths.

--packages                  Comma-separated list of maven coordinates of jars to include
                              on the driver and executor classpaths. Will search the local
                              maven repo, then maven central and any additional remote
                              repositories given by --repositories. The format for the
                              coordinates should be groupId:artifactId:version.

如果是 --jars

然后spark不会命中maven,但它会在本地文件系统中搜索指定的jar,它也支持以下URL方案hdfs / http / https / ftp。

所以如果它是 --包

然后 spark 将在本地 maven 存储库中搜索特定包,然后搜索中央 maven 存储库或 --存储库提供的任何存储库,然后下载它。

现在回到你的问题:

另外,如果依赖项位于我的应用程序中,我是否需要软件包配置 pom.xml?

:不,如果您不直接在 jar 中导入/使用类,但需要通过某些类加载器或服务加载程序(例如 JDBC 驱动程序)加载类。是的,否则。

顺便说一句,如果你在pom中使用特定jar的特定版本.xml那么你为什么不制作应用程序的uber/fat jar或在--jars参数中提供依赖jar?而不是使用 --包

链接参考:

激发高级依赖管理

add-jars-to-a-spark-job-spark-submit


答案 2

推荐