spark.executor.extraClassPath选项以编程方式通过SparkConf进行设置

问题描述 投票:3回答:1

我的项目罐与EMR上的jar冲突,所以为了解决这个问题我已经通过bootstrap脚本将所有高级jar复制到节点的自定义位置。我已经验证了罐子被复制到所有执行器节点上。

它使用spark-submit工作正常,我的code引用了所有节点的自定义文件夹中的新jar。

/usr/bin/spark-submit --conf="spark.driver.extraClassPath=/usr/customJars/*" --conf="spark.executor.extraClassPath=/usr/customJars/*"  

同样的事情我想通过更新sparkconf对象在代码中以编程方式实现。

sparkConf.set("spark.driver.extraClassPath", "/usr/customJars/*");
sparkConf.set("spark.executor.extraClassPath", "/usr/customJars/*"); 

当我想以编程方式实现时,它无法正常工作。我的code没有在自定义位置引用更新的罐子。

有什么建议吗?

apache-spark sparkcore
1个回答
0
投票

在Spark中的运行时无法更改大多数属性。

您可以看到SparkConf的文档:SparkConf

将SparkConf传递给SparkContext构造函数后,将克隆这些值,并且无法更改这些值。这是一个Spark限制。

在测试新的属性更改之前,您需要确保停止并启动Spark会话。

作为文档的补充评论:Spark Configuration

对于spark.executor.extraClassPath

额外的类路径条目,它们位于执行程序的类路径之前。这主要是为了向后兼容旧版本的Spark。用户通常不需要设置此选项。

您可以使用会影响驱动程序和执行程序的spark.jars

以逗号分隔的jar列表,​​包含在驱动程序和执行程序类路径中。允许使用全球。

确保您的罐子在执行器中可用。

© www.soinside.com 2019 - 2024. All rights reserved.