SparkContext.addFile vs spark-submit --files

时间:2016-08-10 17:00:24

标签: apache-spark

我正在使用Spark 1.6.0。我想传递一些属性文件,如log4j.properties和一些其他客户属性文件。我看到我们可以使用--files但我也看到了SparkContext中有一个方法addFile。假设两个选项都相同,我确实更喜欢使用--files而不是以编程方式添加文件吗?

我没有找到关于--files的文档,所以--files& SparkContext.addFile这两个选项一样吗?

我发现有关--filesSparkContext.addFile的参考文献。

1 个答案:

答案 0 :(得分:17)

这取决于您的Spark应用程序是以客户端还是群集模式运行。

客户端模式中,驱动程序(应用程序主机)在本地运行,可以从项目中访问这些文件,因为它们在本地文件系统中可用。 SparkContext.addFile 应找到您的本地文件并按预期工作。

如果您的应用程序以群集模式运行。该应用程序通过spark-submit提交。这意味着您的整个应用程序将转移到Spark主服务器或Yarn,它会在特定节点和分离环境中的集群中启动驱动程序(应用程序主服务器)。此环境无权访问本地项目目录。因此,所有必要的文件也必须被转移。这可以使用--files选项实现。相同的概念适用于jar文件(Spark应用程序的依赖关系)。在群集模式下,需要使用--jars选项添加它们,以便在应用程序主机的类路径中可用。如果您使用PySpark,则会有--py-files选项。