[英]Spark-Submit: --packages vs --jars
有人能解释一下spark-submit脚本中--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 &
另外,如果依赖项在我的应用程序pom.xml
是否需要--packages
配置? (我问,因为我只是通过更改--packages
的版本而忘记在pom.xml
更改它来炸毁我的应用程序)
我目前使用的是--jars
因为罐子很大(超过100GB),因此减慢了阴影罐子的编译速度。 我承认我不知道为什么我使用--packages
,因为我遵循datastax文档
如果你做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。
所以如果是--packages
然后spark将搜索本地maven repo中的特定包,然后搜索中央maven repo或--repositories提供的任何repo,然后下载它。
现在回到你的问题:
另外,如果依赖项在我的应用程序pom.xml中,是否需要 - packages配置?
Ans :不,如果您没有直接在jar中导入/使用类,但需要通过某些类加载器或服务加载器(例如JDBC驱动程序)加载类。 是的,否则。
顺便说一句,如果你在你的pom.xml中使用特定jar的特定版本那么为什么你不在你的应用程序中制作uber / fat jar或在-jars参数中提供依赖jar? 而不是使用--packages
链接参考:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.