gpt4 book ai didi

scala - SparkSession 不接受运行时配置

转载 作者:行者123 更新时间:2023-12-01 11:18:05 25 4
gpt4 key购买 nike

在我的应用程序中,我正在创建一个 SparkSession对象,然后尝试读取我的属性文件并在运行时设置属性。但它没有选择我在运行时传递的属性。

我正在以 YARN 集群模式提交我的应用程序

这是我在 Trait 中创建的初始 Spark session 对象

val spark = SparkSession.builder().appName("MyApp").enableHiveSupport().getOrCreate()

然后在对象内部的主函数中,我扩展了这个 Trait,所以我的 spark session 在 Trait 和我的对象(包含 main)中初始化,我正在设置:
spark.conf.set(spark.sql.hive.convertMetastoreParquet, false)
spark.conf.set(mapreduce.input.fileinputformat.input.dir.recursive,true)
spark.conf.set(spark.dynamicAllocation.enabled, true)
spark.conf.set(spark.shuffle.service.enabled, true)
spark.conf.set(spark.dynamicAllocation.minExecutors,40)

所以理想情况下,我的应用程序必须从 40 个执行程序开始,但它正在启动,然后完全使用默认的 2 个执行程序运行..

最佳答案

这里没有什么意外。只能在运行时设置 Spark SQL 属性的某些子集(以 spark.sql 为前缀)(请参阅 SparkConf 文档):

Once a SparkConf object is passed to Spark, it is cloned and can no longer be modified by the user. Spark does not support modifying the configuration at runtime.



其余选项必须在 SparkContext 之前设置被初始化。意思是初始化 SparkSessionSparkContext :
val conf: SparkConf = ...   // Set options here
val sc = SparkContext(conf)
val spark = SparkSession(sc)

config SparkSession.Builder的方法和 SparkConf
val conf: SparkConf = ...   // Set options here
val spark = SparkSession.builder.config(conf).getOrCreate

或键值对:
val spark = SparkSession.builder.config("spark.some.key", "some_value").getOrCreate

这尤其适用于 spark.dynamicAllocation.enabled , spark.shuffle.service.enabledspark.dynamicAllocation.minExecutors .
mapreduce.input.fileinputformat.input.dir.recursive另一方面,是 Hadoop 配置的属性,而不是 Spark,应该在那里设置:
spark.sparkContext.hadoopConfiguration.set("some.hadoop.property", "some_value")

关于scala - SparkSession 不接受运行时配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48055133/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com