web-dev-qa-db-ja.com

PySparkで現在のsparkコンテキスト設定を取得することは可能ですか?

現在のsparkcontextspark.worker.dirへのパスを取得しようとしています。

config paramとして明示的に設定すると、SparkConfから読み戻すことができますが、configを使用して完全なPySpark(すべてのデフォルトを含む)にアクセスできます?

48
whisperstream

はい:sc._conf.getAll()

メソッドを使用する:

SparkConf.getAll()

によってアクセスされる

SparkContext.sc._conf

アンダースコアに注意してください。 sparkのソースコードを見て、それを理解する必要がありました;)

しかし、それは動作します:

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')]
69
javadba

Spark 2.1+

spark.sparkContext.getConf().getAll()ここでsparkはあなたのsparksessionです(設定されたすべての設定でdictを提供します)

52
Kevad

Spark 1.6+

sc.getConf.getAll.foreach(println)
28
ecesena

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

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)
9
asmaier

残念ながら、いいえ、バージョン2.3.1のSparkプラットフォームは、実行時にすべてのプロパティの値にプログラムでアクセスする方法を提供しません。構成ファイル(spark-defaults.confなど)を介して明示的に設定された、セッションの作成時にSparkConfオブジェクトを介して設定された、またはユーザーがジョブを送信しましたが、これらのメソッドはいずれも明示的に設定されていないプロパティのデフォルト値を表示しません。完全を期すための最良のオプションは次のとおりです。

  • SparkアプリケーションのWeb UI(通常http://<driver>:4040にあります)には、プロパティ値テーブルのある[環境]タブがあります。
  • SparkContextはPySpark内の構成への非表示の参照を保持し、構成はgetAllメソッドを提供します:spark.sparkContext._conf.getAll()
  • Spark SQLは、プロパティ値のテーブルを返す SETコマンド を提供します:spark.sql("SET").toPandas()SET -vを使用して、プロパティの説明を含む列を含めることもできます。

(これら3つのメソッドはすべて、クラスターで同じデータを返します。)

4
DGrady

次を使用できます。

ssc.sparkContext.getConf.getAll

たとえば、私のSparkプログラムの上部には次のようなものがよくあります。

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

sc.getConf()。getAll()は、すべての設定のリストを提供します

1
Rohit

記録のために、類似のJavaバージョン:

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

Spark 2+の場合、scalaを使用するときにも使用できます

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

すべてのデフォルト設定を簡単に取得できるかどうかはわかりませんが、特にワーカーディレクトリについては、非常にわかりやすいです。

from pyspark import SparkFiles
print SparkFiles.getRootDirectory()
0
whisperstream