Anpassen von SparkContext mithilfe von sparkConf.set (..) bei Verwendung von Spark-Shell

8

In Spark gibt es drei Möglichkeiten, um die Optionen für SparkConf anzugeben, die zum Erstellen von SparkContext verwendet wurden:

  1. Als Eigenschaften in der Datei conf / spark-defaults.conf
    • z. B. die Zeile: spark.driver.memory 4g
  2. Als Argumente, um Funkenschale oder Funken vorzulegen
    • z. B. spark-shell --driver-memory 4g ...
  3. Konfigurieren Sie in Ihrem Quellcode eine SparkConf -Instanz, bevor Sie sie zum Erstellen von SparkContext verwenden:
    • z. B. sparkConf.set( "spark.driver.memory", "4g" )

Wenn Sie jedoch spark-shell verwenden, wird der SparkContext bereits erstellt, wenn Sie eine Shell-Eingabeaufforderung in der Variablen sc erhalten. Wie benutzt man bei Verwendung von Spark-Shell die Option # 3 in der obigen Liste, um Konfigurationsoptionen festzulegen, wenn der SparkContext bereits erstellt wurde, bevor Sie Scala-Anweisungen ausführen können?

Ich versuche insbesondere, Kyro-Serialisierung und GraphX ​​zu verwenden. Die vorgeschriebene Methode zur Verwendung von Kryo mit GraphX ​​besteht darin, die folgende Scala-Anweisung auszuführen, wenn Sie die SparkConf -Instanz anpassen:

%Vor%

Wie erreiche ich dies, wenn spark-shell ausgeführt wird?

    
rake 14.07.2015, 04:36
quelle

1 Antwort

28

Spark 2.0 +

Sie sollten SparkSession.conf.set method verwenden können, um einige Konfigurationsoptionen für die Laufzeit festzulegen, aber es ist meistens auf die SQL-Konfiguration beschränkt.

Spark & ​​lt; 2.0

Sie können einfach einen bestehenden Kontext anhalten und einen neuen erstellen:

%Vor%

Wie Sie in der offiziellen Dokumentation lesen können:

  

Sobald ein SparkConf-Objekt an Spark übergeben wurde, wird es geklont und kann vom Benutzer nicht mehr geändert werden. Spark unterstützt die Änderung der Konfiguration zur Laufzeit nicht.

Wie Sie sehen können, ist das Stoppen des Kontexts die einzige anwendbare Option, sobald die Shell gestartet wurde.

Sie können immer Konfigurationsdateien oder das --conf Argument für spark-shell verwenden, um die erforderlichen Parameter zu setzen, die als Standardkontext verwendet werden. Im Falle von Kryo sollten Sie sich ansehen:

  • spark.kryo.classesToRegister
  • spark.kryo.registrator

Siehe Komprimierung und Serialisierung in Sparkkonfiguration .

    
zero323 14.07.2015 09:23
quelle