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-files
和 sc.addFile
和 sc.addPyFile
很混乱,有人能解释清楚吗?
【问题讨论】:
后两个显式来自 SparkContext 对象,前三个来自终端(虽然我似乎在提交应用程序文档中找不到对档案的引用) 【参考方案1】:这些选项确实分散在各处。
一般来说,通过--files
或--archives
添加数据文件,通过--py-files
添加代码文件。后者将被添加到类路径中(c.f.,here),以便您可以导入和使用。
您可以想象,CLI 参数实际上是由 addFile
和 addPyFiles
函数处理的(c.f.,here)
来自http://spark.apache.org/docs/latest/running-on-yarn.html在幕后,
pyspark
调用更通用的spark-submit
脚本。您可以通过将逗号分隔的列表传递给
--py-files
,将 Python .zip、.egg 或 .py 文件添加到运行时路径
来自http://spark.apache.org/docs/latest/api/python/pyspark.html?highlight=addpyfile#pyspark.SparkContext.addPyFile
--files
和--archives
选项支持使用 # 指定文件名,类似于 Hadoop。例如,您可以指定:--files localtest.txt#appSees.txt,这会将您在本地命名为 localtest.txt 的文件上传到 HDFS,但这将通过名称 appSees.txt 链接到,并且您的应用程序应该使用命名为 appSees.txt 以便在 YARN 上运行时引用它。
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-submit参数