現在のsparkcontext
のspark.worker.dir
へのパスを取得しようとしています。
config param
として明示的に設定すると、SparkConf
から読み戻すことができますが、config
を使用して完全なPySpark
(すべてのデフォルトを含む)にアクセスできます?
はい: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')]
Spark 2.1+
spark.sparkContext.getConf().getAll()
ここでspark
はあなたのsparksession
です(設定されたすべての設定でdict
を提供します)
Spark 1.6+
sc.getConf.getAll.foreach(println)
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()
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)
残念ながら、いいえ、バージョン2.3.1のSparkプラットフォームは、実行時にすべてのプロパティの値にプログラムでアクセスする方法を提供しません。構成ファイル(spark-defaults.conf
など)を介して明示的に設定された、セッションの作成時にSparkConf
オブジェクトを介して設定された、またはユーザーがジョブを送信しましたが、これらのメソッドはいずれも明示的に設定されていないプロパティのデフォルト値を表示しません。完全を期すための最良のオプションは次のとおりです。
http://<driver>:4040
にあります)には、プロパティ値テーブルのある[環境]タブがあります。SparkContext
はPySpark内の構成への非表示の参照を保持し、構成はgetAll
メソッドを提供します:spark.sparkContext._conf.getAll()
。SET
コマンド を提供します:spark.sql("SET").toPandas()
。 SET -v
を使用して、プロパティの説明を含む列を含めることもできます。(これら3つのメソッドはすべて、クラスターで同じデータを返します。)
次を使用できます。
ssc.sparkContext.getConf.getAll
たとえば、私のSparkプログラムの上部には次のようなものがよくあります。
logger.info(ssc.sparkContext.getConf.getAll.mkString("\n"))
sc.getConf()。getAll()は、すべての設定のリストを提供します
記録のために、類似のJavaバージョン:
Tuple2<String, String> sc[] = sparkConf.getAll();
for (int i = 0; i < sc.length; i++) {
System.out.println(sc[i]);
}
Spark 2+の場合、scalaを使用するときにも使用できます
spark.conf.getAll; //spark as spark session
すべてのデフォルト設定を簡単に取得できるかどうかはわかりませんが、特にワーカーディレクトリについては、非常にわかりやすいです。
from pyspark import SparkFiles
print SparkFiles.getRootDirectory()