pyspark 获取默认的spark配置值

anauzrmj  于 2023-05-06  发布在  Spark
关注(0)|答案(1)|浏览(119)

我在RHEL上使用Spark版本2.4(有时是3.1),PySpark 2.4,Python 3.7。显式的PySpark spark配置可以通过以下方式检索:

from pyspark.sql import SparkSession
spark = (
    SparkSession.builder
    .appName('my_spark_app')
    .config("spark.executor.cores", "2")
    .getOrCreate()
)
spark.sparkContext.getConf().getAll()
# or
spark.sparkContext.getConf().toDebugString()

但这些不包括默认值。例如,从文档中应该有spark.executor.memory“1g”。相反,我们看到(缺失)None值:

>>> dict(spark.sparkContext.getConf().getAll()).get('spark.executor.memory', 'None')
None

这对于在各种管理员管理的环境中调试运行时spark配置设置是不方便的。
也许这在earlier versions or in Scala之前是可能的,但是not more recently
我希望上面的代码返回“1g”。知道怎么做的吗

2ekbmq32

2ekbmq321#

如果您启用了SPARK UI,则API可以使用它来提供您的环境信息:

  • Spark三:

appId = spark.sparkContext.applicationId

  • Spark二:

appId = spark_session._sc.applicationId

# spark is an existing SparkSession
from pyspark.sql import SparkSession, functions as F
from urllib.request import urlopen

spark = SparkSession.builder.getOrCreate()

url = "http://localhost:4040/api/v1/applications/"+appId+"/environment"
jsonData = urlopen(url).read().decode('utf-8')
rdd = spark.sparkContext.parallelize([jsonData])
df = spark.read.json(rdd)
# Displays the content of the DataFrame to stdout
df.show()

如果你已经打开了spark历史服务器,它会有以前运行的记录,这样你就可以查看以前的运行和它们的环境。(查看作业的环境选项卡)这可能更容易查看,并且是专门为你要做的事情而构建的。
检查环境设置的另一种方法。Is it possible to get the current spark context settings in PySpark?

相关问题