spark作业参数中的--archive,--file,py-file有啥区别

Posted

技术标签:

【中文标题】spark作业参数中的--archive,--file,py-file有啥区别【英文标题】:What's the difference between --archives, --files, py-files in pyspark job argumentsspark作业参数中的--archive,--file,py-file有什么区别 【发布时间】:2016-06-28 02:56:14 【问题描述】:

--archives--files--py-filessc.addFilesc.addPyFile 很混乱,有人能解释清楚吗?

【问题讨论】:

后两个显式来自 SparkContext 对象,前三个来自终端(虽然我似乎在提交应用程序文档中找不到对档案的引用) 【参考方案1】:

这些选项确实分散在各处。

一般来说,通过--files--archives 添加数据文件,通过--py-files 添加代码文件。后者将被添加到类路径中(c.f.,here),以便您可以导入和使用。

您可以想象,CLI 参数实际上是由 addFileaddPyFiles 函数处理的(c.f.,here)

来自http://spark.apache.org/docs/latest/programming-guide.html

在幕后,pyspark 调用更通用的 spark-submit 脚本。

您可以通过将逗号分隔的列表传递给--py-files,将 Python .zip、.egg 或 .py 文件添加到运行时路径

来自http://spark.apache.org/docs/latest/running-on-yarn.html

--files--archives 选项支持使用 # 指定文件名,类似于 Hadoop。例如,您可以指定:--files localtest.txt#appSees.txt,这会将您在本地命名为 localtest.txt 的文件上传到 HDFS,但这将通过名称 appSees.txt 链接到,并且您的应用程序应该使用命名为 appSees.txt 以便在 YARN 上运行时引用它。

来自http://spark.apache.org/docs/latest/api/python/pyspark.html?highlight=addpyfile#pyspark.SparkContext.addPyFile

addFile(path) 在每个节点上添加要与此 Spark 作业一起下载的文件。传递的路径可以是本地文件、HDFS(或其他 Hadoop 支持的文件系统)中的文件,也可以是 HTTP、HTTPS 或 FTP URI。

addPyFile(path) 为将来要在此 SparkContext 上执行的所有任务添加 .py 或 .zip 依赖项。传递的路径可以是本地文件、HDFS(或其他 Hadoop 支持的文件系统)中的文件,也可以是 HTTP、HTTPS 或 FTP URI。

【讨论】:

为什么没有addArchives(path)函数,如何从代码中添加存档。 非常好的答案先生,答案可能更完整,参考 SparkFiles.get (spark.apache.org/docs/2.4.0/api/python/…) 因为目前还不清楚它与您描述的其他内容的关系以及应该是什么正确使用它。

以上是关于spark作业参数中的--archive,--file,py-file有啥区别的主要内容,如果未能解决你的问题,请参考以下文章

spark 资源参数调优

SPARK资源参数调优

提交Spark作业 | 科学设定spark-submit参数

将spark依赖包传入HDFS_spark.yarn.jar和spark.yarn.archive的使用

带有缓存和操作的奇怪 Spark 行为

spark 任务运行原理