是否有可能在PySpark中获取当前的spark上下文设置?

时间:2015-05-31 17:15:50

标签: apache-spark config pyspark

我正试图获取当前class RegistrationForm(Form): username = StringField('username', [validators.Length(min=4, max=25)]) email = StringField('email', [validators.email, validators.Length(min=4, max=40)]) password = PasswordField('password', [validators.Required(), validators.EqualTo('confirm', message='Passwords skal matche hinanden.') ]) confirm = PasswordField('passwordconfirm') accept_tos = BooleanField('Jeg accepterer regler for denne hjemmeside', [validators.Required()]) spark.worker.dir的路径。

如果我明确地将其设置为sparkcontext,我可以从config param中读取它,但无论如何都要使用{{访问完整的SparkConf(包括所有默认值) 1}}?

14 个答案:

答案 0 :(得分:63)

是: sc._conf.getAll()

使用该方法:

SparkConf.getAll()

访问

SparkContext.sc._conf

注意下划线:这使得这很棘手。我不得不看一下火花源代码来解决它;)

但确实有效:

In [4]: sc._conf.getAll()
Out[4]:
[(u'spark.master', u'local'),
 (u'spark.rdd.compress', u'True'),
 (u'spark.serializer.objectStreamReset', u'100'),
 (u'spark.app.name', u'PySparkShell')]

答案 1 :(得分:48)

Spark 2.1 +

spark.sparkContext.getConf().getAll()其中spark是您的sparksession(为您提供dict所有已配置的设置)

答案 2 :(得分:27)

Spark 1.6 +

sc.getConf.getAll.foreach(println)

答案 3 :(得分:12)

更新 Spark 2.3.1

中的配置

要更改默认的火花配置,您可以按照以下步骤操作:

导入所需的课程

chrome.exe 16688 None

获取默认配置

from pyspark.conf import SparkConf
from pyspark.sql import SparkSession

更新默认配置

spark.sparkContext._conf.getAll()

停止当前的Spark会话

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()

答案 4 :(得分:9)

有关Spark环境和配置的完整概述,我发现以下代码片段非常有用:

SparkContext:

for item in sorted(sc._conf.getAll()): print(item)

Hadoop配置:

hadoopConf = {}
iterator = sc._jsc.hadoopConfiguration().iterator()
while iterator.hasNext():
    prop = iterator.next()
    hadoopConf[prop.getKey()] = prop.getValue()
for item in sorted(hadoopConf.items()): print(item)

环境变量:

import os
for item in sorted(os.environ.items()): print(item)

答案 5 :(得分:4)

不幸的是,不,Spark平台自2.3.1版本起,没有提供任何方式在运行时以编程方式访问每个属性的值。它提供了几种方法来访问通过配置文件(例如spark-defaults.conf)显式设置的属性值,在创建会话时通过SparkConf对象设置的属性或在创建会话时通过命令行设置的属性的值。提交了作业,但是这些方法都不会显示未明确设置的属性的默认值。为了完整起见,最好的选择是:

  • Spark应用程序的Web UI(通常位于http://<driver>:4040上)具有带有属性值表的“环境”标签。
  • SparkContext在PySpark中保留对其配置的隐藏引用,并且该配置提供了一种getAll方法:spark.sparkContext._conf.getAll()
  • Spark SQL提供the SET command,它将返回属性值表:spark.sql("SET").toPandas()。您还可以使用SET -v在属性说明中添加一列。

(这三个方法都在我的集群上返回相同的数据。)

答案 6 :(得分:3)

您可以使用:

ssc.sparkContext.getConf.getAll

例如,我经常在Spark程序的顶部有以下内容:

logger.info(ssc.sparkContext.getConf.getAll.mkString("\n"))

答案 7 :(得分:0)

不确定您是否可以轻松获得所有默认设置,但特别是对于工作人员,它非常直接:

from pyspark import SparkFiles
print SparkFiles.getRootDirectory()

答案 8 :(得分:0)

仅为记录类似的java版本:

Tuple2<String, String> sc[] = sparkConf.getAll();
for (int i = 0; i < sc.length; i++) {
    System.out.println(sc[i]);
}

答案 9 :(得分:0)

对于Spark 2+,您也可以在使用scala时使用

spark.conf.getAll; //spark as spark session 

答案 10 :(得分:0)

sc.getConf()。getAll()将为您提供所有设置的列表

答案 11 :(得分:0)

假设我想使用Spark Session在运行时增加驱动程序内存:

s2 = SparkSession.builder.config("spark.driver.memory", "29g").getOrCreate()

现在我要查看更新的设置:

s2.conf.get("spark.driver.memory")

要获取所有设置,您可以使用spark.sparkContext._conf.getAll()

UPDATED SETTINGS

希望这会有所帮助

答案 12 :(得分:0)

如果您想查看数据块中的配置,请使用以下命令

spark.sparkContext._conf.getAll()

答案 13 :(得分:0)

我建议您尝试以下方法以获取当前的 Spark 上下文设置。

SparkConf.getAll()

访问者

SparkContext.sc._conf

获取 Spark 2.1+ 的默认配置

spark.sparkContext.getConf().getAll() 

停止当前的 Spark 会话

spark.sparkContext.stop()

创建 Spark 会话

spark = SparkSession.builder.config(conf=conf).getOrCreate()