Sparkでは、SparkConf
の作成に使用されるSparkContext
のオプションを指定する3つの主要な方法があります。
spark.driver.memory 4g
_spark-Shell --driver-memory 4g ...
_SparkConf
を作成するために使用する前にSparkContext
インスタンスを構成します:: sparkConf.set( "spark.driver.memory", "4g" )
ただし、_spark-Shell
_を使用する場合、Shellプロンプトを取得するまでにsc
という名前の変数にSparkContextが既に作成されています。 spark-Shellを使用する場合、Scalaステートメントを実行する前にSparkContextがすでに作成されている場合、上記のリストのオプション#3を使用して構成オプションを設定するにはどうすればよいですか?
特に、Kyroシリアル化とGraphXを使用しようとしています。 GraphXでKryoを使用するための規定の方法は、SparkConf
インスタンスをカスタマイズするときに、次のScalaステートメントを実行することです。
_GraphXUtils.registerKryoClasses( sparkConf )
_
_spark-Shell
_を実行しているときにこれを達成するにはどうすればよいですか?
Spark 2.0 +
SparkSession.conf.set
メソッドを使用して、実行時にsome構成オプションを設定できるはずですが、これは主にSQL構成に限定されています。
スパーク<2.0
既存のコンテキストを停止して、新しいコンテキストを作成できます。
import org.Apache.spark.{SparkContext, SparkConf}
sc.stop()
val conf = new SparkConf().set("spark.executor.memory", "4g")
val sc = new SparkContext(conf)
公式ドキュメント で読むことができます:
sparkConfオブジェクトがSparkに渡されると、そのオブジェクトは複製され、ユーザーは変更できなくなります。 Sparkは実行時の構成の変更をサポートしません。
したがって、コンテキストの停止を確認できるように、シェルが開始された後はコンテキストのみが適用可能なオプションです。
常に設定ファイルまたは--conf
のspark-Shell
引数を使用して、デフォルトのコンテキストとして使用される必須パラメーターを設定できます。 Kryoの場合、以下を見てください:
spark.kryo.classesToRegister
spark.kryo.registrator
Spark Configuration の Compression and Serialization を参照してください。