我试图覆盖spark会话/ spark上下文默认配置,但它正在挑选整个节点/群集资源。
spark = SparkSession.builder
.master("ip")
.enableHiveSupport()
.getOrCreate()
spark.conf.set("spark.executor.memory", '8g')
spark.conf.set('spark.executor.cores', '3')
spark.conf.set('spark.cores.max', '3')
spark.conf.set("spark.driver.memory",'8g')
sc = spark.sparkContext
当我将配置放入spark提交时,它工作正常
spark-submit --master ip --executor-cores=3 --diver 10G code.py
你实际上并没有用这段代码覆盖任何东西。只是这样你可以亲自看看,尝试以下方法。
一旦你启动pyspark shell类型:
sc.getConf().getAll()
这将显示所有当前配置设置。然后尝试您的代码并再次执行。没有什么变化。
您应该做的是创建一个新配置并使用它来创建SparkContext。像这样做:
conf = pyspark.SparkConf().setAll([('spark.executor.memory', '8g'), ('spark.executor.cores', '3'), ('spark.cores.max', '3'), ('spark.driver.memory','8g')])
sc.stop()
sc = pyspark.SparkContext(conf=conf)
然后你可以像上面一样检查自己:
sc.getConf().getAll()
这应该反映您想要的配置。
更新Spark 2.3.1中的配置
要更改默认的spark配置,您可以按照以下步骤操作:
导入所需的类
from pyspark.conf import SparkConf
from pyspark.sql import SparkSession
获取默认配置
spark.sparkContext._conf.getAll()
更新默认配置
conf = spark.sparkContext._conf.setAll([('spark.executor.memory', '4g'), ('spark.app.name', 'Spark Updated Conf'), ('spark.executor.cores', '4'), ('spark.cores.max', '4'), ('spark.driver.memory','4g')])
停止当前的Spark会话
spark.sparkContext.stop()
创建Spark会话
spark = SparkSession.builder.config(conf=conf).getOrCreate()
在配置中将'spark.driver.host'设置为'localhost'对我有用
spark = SparkSession \
.builder \
.appName("MyApp") \
.config("spark.driver.host", "localhost") \
.getOrCreate()