In Spark gibt es drei Möglichkeiten, um die Optionen für SparkConf
anzugeben, die zum Erstellen von SparkContext
verwendet wurden:
spark.driver.memory 4g
spark-shell --driver-memory 4g ...
SparkConf
-Instanz, bevor Sie sie zum Erstellen von SparkContext
verwenden:
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:
Wie erreiche ich dies, wenn spark-shell
ausgeführt wird?
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 .
Tags und Links scala serialization apache-spark kryo