Har*_*ish 31 python apache-spark pyspark spark-dataframe
我试图覆盖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
Run Code Online (Sandbox Code Playgroud)
当我将配置放入spark提交时,它工作正常
spark-submit --master ip --executor-cores=3 --diver 10G code.py
Run Code Online (Sandbox Code Playgroud)
Grr*_*Grr 34
你实际上并没有用这段代码覆盖任何东西.只是这样你可以亲自看看,尝试以下方法.
一旦你启动pyspark shell类型:
sc.getConf().getAll()
Run Code Online (Sandbox Code Playgroud)
这将显示所有当前配置设置.然后尝试您的代码并再次执行.没有什么变化.
您应该做的是创建一个新配置并使用它来创建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)
Run Code Online (Sandbox Code Playgroud)
然后你可以像上面一样检查自己:
sc.getConf().getAll()
Run Code Online (Sandbox Code Playgroud)
这应该反映您想要的配置.
bob*_*bob 22
更新Spark 2.3.1中的配置
要更改默认的spark配置,您可以按照以下步骤操作:
导入所需的类
from pyspark.conf import SparkConf
from pyspark.sql import SparkSession
Run Code Online (Sandbox Code Playgroud)
获取默认配置
spark.sparkContext._conf.getAll()
Run Code Online (Sandbox Code Playgroud)
更新默认配置
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')])
Run Code Online (Sandbox Code Playgroud)
停止当前的Spark会话
spark.sparkContext.stop()
Run Code Online (Sandbox Code Playgroud)
创建Spark会话
spark = SparkSession.builder.config(conf=conf).getOrCreate()
Run Code Online (Sandbox Code Playgroud)