--archives
,--files
,--py-files
以及sc.addFile
和sc.addPyFile
非常混乱,有人可以清楚解释这些吗?
答案 0 :(得分:7)
这些选项真的分散在各处。
通常,通过--files
或--archives
添加您的数据文件,并通过--py-files
添加代码文件。后者将被添加到类路径(c.f.,here)中,以便您可以导入和使用。
可以想象,CLI参数实际上由addFile
和addPyFiles
函数处理(c.f。,here)
在幕后,
pyspark
调用更通用的spark-submit
脚本。您可以通过将逗号分隔列表传递给
,将Python .zip,.egg或.py文件添加到运行时路径中--py-files
--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。