pyspark作业参数中--archives,--files,py-files之间的区别是什么

时间:2016-06-28 02:56:15

标签: apache-spark pyspark pyspark-sql

--archives--files--py-files以及sc.addFilesc.addPyFile非常混乱,有人可以清楚解释这些吗?

1 个答案:

答案 0 :(得分:7)

这些选项真的分散在各处。

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

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

  

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

     

您可以通过将逗号分隔列表传递给--py-files

,将Python .zip,.egg或.py文件添加到运行时路径中
  

--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。