是否可以在 PySpark 中获取当前的 spark 上下文设置?
Is it possible to get the current spark context settings in PySpark?
我正在尝试获取当前 sparkcontext
到 spark.worker.dir
的路径。
如果我明确地将它设置为 config param
,我可以从 SparkConf
读回它,但无论如何都可以访问完整的 config
(包括所有默认值)使用PySpark
?
不确定您是否可以轻松获得所有默认设置,但特别是对于 worker 目录,它非常直接:
from pyspark import SparkFiles
print SparkFiles.getRootDirectory()
是:sc.getConf().getAll()
其中使用的方法:
SparkConf.getAll()
访问者
SparkContext.sc.getConf()
但它确实有效:
In [4]: sc.getConf().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')]
您可以使用:
sc.sparkContext.getConf.getAll
例如,我的 Spark 程序的顶部经常有以下内容:
logger.info(sc.sparkContext.getConf.getAll.mkString("\n"))
Spark 1.6+
sc.getConf.getAll.foreach(println)
仅供记录,类似的 java 版本:
Tuple2<String, String> sc[] = sparkConf.getAll();
for (int i = 0; i < sc.length; i++) {
System.out.println(sc[i]);
}
Spark 2.1+
spark.sparkContext.getConf().getAll()
其中 spark
是您的 sparksession
(为您提供一个包含所有配置设置的 dict
)
为了全面了解您的 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)
对于 Spark 2+,您也可以在使用 scala 时使用
spark.conf.getAll; //spark as spark session
在 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()
不幸的是,不,从版本 2.3.1 开始的 Spark 平台不提供任何方式来以编程方式在 运行 时间访问每个 属性 的值。它提供了几种方法来访问通过配置文件显式设置的属性值(如 spark-defaults.conf
),在创建会话时通过 SparkConf
对象设置,或者在创建会话时通过命令行设置提交了作业,但是这些方法中的 none 将显示未明确设置的 属性 的默认值。为了完整起见,最好的选择是:
- Spark 应用程序的网站 UI,通常位于
http://<driver>:4040
,有一个“环境”选项卡,其 属性 值为 table。
SparkContext
在PySpark中保留对其配置的隐藏引用,配置提供getAll
方法:spark.sparkContext._conf.getAll()
.
- Spark SQL 提供 the
SET
command,它将 return table 个 属性 值:spark.sql("SET").toPandas()
。您还可以使用 SET -v
来包含包含 属性 描述的列。
(这三种方法都return我集群上的相同数据。)
简直运行
sc.getConf().getAll()
应该给你一个包含所有设置的列表。
假设我想使用 Spark Session 在运行时增加驱动程序内存:
s2 = SparkSession.builder.config("spark.driver.memory", "29g").getOrCreate()
现在我想查看更新后的设置:
s2.conf.get("spark.driver.memory")
要获取所有设置,您可以使用spark.sparkContext._conf.getAll()
希望对您有所帮助
如果要查看数据块中的配置,请使用以下命令
spark.sparkContext._conf.getAll()
我建议您尝试以下方法以获取当前的 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()
我正在尝试获取当前 sparkcontext
到 spark.worker.dir
的路径。
如果我明确地将它设置为 config param
,我可以从 SparkConf
读回它,但无论如何都可以访问完整的 config
(包括所有默认值)使用PySpark
?
不确定您是否可以轻松获得所有默认设置,但特别是对于 worker 目录,它非常直接:
from pyspark import SparkFiles
print SparkFiles.getRootDirectory()
是:sc.getConf().getAll()
其中使用的方法:
SparkConf.getAll()
访问者
SparkContext.sc.getConf()
但它确实有效:
In [4]: sc.getConf().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')]
您可以使用:
sc.sparkContext.getConf.getAll
例如,我的 Spark 程序的顶部经常有以下内容:
logger.info(sc.sparkContext.getConf.getAll.mkString("\n"))
Spark 1.6+
sc.getConf.getAll.foreach(println)
仅供记录,类似的 java 版本:
Tuple2<String, String> sc[] = sparkConf.getAll();
for (int i = 0; i < sc.length; i++) {
System.out.println(sc[i]);
}
Spark 2.1+
spark.sparkContext.getConf().getAll()
其中 spark
是您的 sparksession
(为您提供一个包含所有配置设置的 dict
)
为了全面了解您的 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)
对于 Spark 2+,您也可以在使用 scala 时使用
spark.conf.getAll; //spark as spark session
在 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()
不幸的是,不,从版本 2.3.1 开始的 Spark 平台不提供任何方式来以编程方式在 运行 时间访问每个 属性 的值。它提供了几种方法来访问通过配置文件显式设置的属性值(如 spark-defaults.conf
),在创建会话时通过 SparkConf
对象设置,或者在创建会话时通过命令行设置提交了作业,但是这些方法中的 none 将显示未明确设置的 属性 的默认值。为了完整起见,最好的选择是:
- Spark 应用程序的网站 UI,通常位于
http://<driver>:4040
,有一个“环境”选项卡,其 属性 值为 table。 SparkContext
在PySpark中保留对其配置的隐藏引用,配置提供getAll
方法:spark.sparkContext._conf.getAll()
.- Spark SQL 提供 the
SET
command,它将 return table 个 属性 值:spark.sql("SET").toPandas()
。您还可以使用SET -v
来包含包含 属性 描述的列。
(这三种方法都return我集群上的相同数据。)
简直运行
sc.getConf().getAll()
应该给你一个包含所有设置的列表。
假设我想使用 Spark Session 在运行时增加驱动程序内存:
s2 = SparkSession.builder.config("spark.driver.memory", "29g").getOrCreate()
现在我想查看更新后的设置:
s2.conf.get("spark.driver.memory")
要获取所有设置,您可以使用spark.sparkContext._conf.getAll()
希望对您有所帮助
如果要查看数据块中的配置,请使用以下命令
spark.sparkContext._conf.getAll()
我建议您尝试以下方法以获取当前的 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()