Est-il possible d'obtenir les paramètres de contexte spark actuels dans PySpark?

j'essaie d'obtenir le chemin vers spark.worker.dir pour sparkcontext.

si je l'ai explicitement défini comme un config param, je peux le lire à l'arrière d' SparkConf, mais est-il de toute façon d'accéder à tout l' config (incluant toutes les valeurs par défaut) en utilisant <!--5?

29
demandé sur TTT 2015-05-31 20:15:50

10 réponses

Oui: sc._conf.getAll ()

Qui utilise la méthode:

SparkConf.getAll()

accès par

SparkContext.sc._conf

Notez le Underscore: cela rend cette tâche délicate. J'ai dû regarder l'étincelle de code source pour comprendre ;)

Mais il fonctionne:

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')]
52
répondu javadba 2016-06-27 09:05:37

Spark 2.1+

spark.sparkContext.getConf().getAll()spark votre sparksession (vous donne un dict avec tous les paramètres configurés)

24
répondu Kevad 2017-07-11 08:47:09

étincelle 1,6+

sc.getConf.getAll.foreach(println)
18
répondu ecesena 2016-12-05 23:24:53

pour un aperçu complet de votre environnement Spark et de votre configuration, j'ai trouvé les extraits de code suivants utiles:

SparkContext:

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

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

variables D'environnement:

import os
for item in sorted(os.environ.items()): print(item)
5
répondu asmaier 2017-09-14 09:35:55

Vous pouvez utiliser:

ssc.sparkContext.getConf.getAll

par exemple, j'ai souvent les suivants au sommet de mes programmes Spark:

logger.info(ssc.sparkContext.getConf.getAll.mkString("\n"))
2
répondu andrewrjones 2016-06-07 14:11:34

mise à jour de la configuration dans Spark 2.3.1

pour modifier les configurations d'étincelles par défaut, vous pouvez suivre les étapes suivantes:

importer les classes requises

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

Obtenir les configurations par défaut

spark.sparkContext._conf.getAll()

mettre à Jour les configurations par défaut

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

Arrêter la Spark Session

spark.sparkContext.stop()

Créer une Étincelle Session

spark = SparkSession.builder.config(conf=conf).getOrCreate()
2
répondu p2. 2018-08-06 07:13:43

pas sûr si vous pouvez obtenir tous les paramètres par défaut facilement, mais spécifiquement pour le worker dir, il est tout à fait straigt-forward:

from pyspark import SparkFiles
print SparkFiles.getRootDirectory()
0
répondu whisperstream 2015-05-31 20:25:49

Juste pour les enregistrements de la même version de java:

Tuple2<String, String> sc[] = sparkConf.getAll();
for (int i = 0; i < sc.length; i++) {
    System.out.println(sc[i]);
}
0
répondu Aydin K. 2017-06-20 14:29:30

Pour le Spark 2+, vous pouvez également utiliser lors de l'utilisation de scala

spark.conf.getAll; //spark as spark session 
0
répondu xuanyue 2018-03-26 04:51:28

malheureusement, non, la plate-forme Spark de la version 2.3.1 ne fournit aucun moyen d'accéder programmatiquement à la valeur de chaque propriété au moment de l'exécution. Il fournit plusieurs méthodes pour accéder aux valeurs des propriétés qui ont été explicitement définies à travers un fichier de configuration (comme spark-defaults.conf), passe par le SparkConf object lorsque vous avez créé la session, ou défini la ligne de commande lorsque vous avez soumis la tâche, mais aucune de ces méthodes n'affichera la valeur par défaut pour une propriété qui n'était pas définir explicitement. Pour être complet, les meilleures options sont les suivantes:

  • L'interface Web de L'application Spark, généralement à http://<driver>:4040, a un onglet" environnement " avec une table de valeur de propriété.
  • SparkContext conserve une référence cachée à sa configuration dans PySpark, et la configuration fournit un getAll méthode: spark.sparkContext._conf.getAll().
  • Spark SQL fournit SET commande qui retourne un tableau de valeurs de propriété: spark.sql("SET").toPandas(). Vous pouvez également utiliser SET -v pour inclure une colonne avec la propriété de la description.

(Ces trois méthodes sont toutes les mêmes données sur mon cluster.)

0
répondu DGrady 2018-09-18 23:37:20