2015-07-14 4 views
8

In Spark, gibt es drei grundlegende Möglichkeiten, die Optionen für die SparkConf verwendet zur Angabe der SparkContext zu erstellen:anpassen SparkContext mit sparkConf.set (..) bei der Verwendung von Funken Shell

  1. Als Objekte im conf /spark-defaults.conf
    • zB die Zeile: spark.driver.memory 4g
  2. Als args funken-Schale oder funkenunterwerfen
    • zB spark-shell --driver-memory 4g ...
  3. In Ihrem Quellcode, eine SparkConf Instanz zu konfigurieren, bevor es mit dem SparkContext zu erstellen:
    • zB sparkConf.set("spark.driver.memory", "4g")

jedoch bei der Verwendung von spark-shell, der SparkContext ist bereits für Sie erstellt, wenn Sie eine Shell-Eingabeaufforderung erhalten, in der Vari in der Lage, sc. 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?

Insbesondere versuche ich Kyro Serialisierung und GraphX ​​zu verwenden. Die vorgeschriebene Art und Weise Kryo mit GraphX ​​zu verwenden, ist die folgende Scala-Anweisung auszuführen, wenn die SparkConf Instanz Customizing:

GraphXUtils.registerKryoClasses(sparkConf) 

Wie kann ich das erreichen, wenn spark-shell läuft?

Antwort

27

Funken 2.0+

Sie sollten SparkSession.conf.set Methode verwenden, um einig Konfigurationsoption zur Laufzeit zu setzen, sondern es ist vor allem auf SQL-Konfiguration beschränkt.

Funken < 2,0

Sie können einfach einen vorhandenen Kontext stoppen und eine neue erstellen:

import org.apache.spark.{SparkContext, SparkConf} 

sc.stop() 
val conf = new SparkConf().set("spark.executor.memory", "4g") 
val sc = new SparkContext(conf) 

Wie Sie im official documentation lesen:

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

So wie Sie sehen, den Kontext zu stoppen, ist es die einzige anwendbare Option, sobald die Shell gestartet wurde.

Sie können immer Konfigurationsdateien oder --conf Argument zu spark-shell verwenden, um die erforderlichen Parameter zu setzen, die als Standardkontext verwendet werden.Im Falle von Kryo sollten Sie einen Blick auf:

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

Compression and Serialization in Spark Configuration See.