sparkセッション/スパークコンテキストのデフォルト構成を上書きしようとしていますが、ノード/クラスターリソース全体を選択しています。
spark = SparkSession.builder
.master("ip")
.enableHiveSupport()
.getOrCreate()
spark.conf.set("spark.executor.memory", '8g')
spark.conf.set('spark.executor.cores', '3')
spark.conf.set('spark.cores.max', '3')
spark.conf.set("spark.driver.memory",'8g')
sc = spark.sparkContext
spark submitに構成を配置すると正常に動作します
spark-submit --master ip --executor-cores=3 --diver 10G code.py
このコードで実際に何かを上書きしているわけではありません。あなたが自分で見ることができるように、次を試してください。
Pyspark Shellを起動したらすぐに次のように入力します。
sc.getConf().getAll()
これにより、現在の構成設定がすべて表示されます。次に、コードを試して、もう一度実行します。何も変わりません。
代わりに行うべきことは、新しい構成を作成し、それを使用してSparkContextを作成することです。次のようにします:
conf = pyspark.SparkConf().setAll([('spark.executor.memory', '8g'), ('spark.executor.cores', '3'), ('spark.cores.max', '3'), ('spark.driver.memory','8g')])
sc.stop()
sc = pyspark.SparkContext(conf=conf)
次に、上記のように自分自身を確認できます:
sc.getConf().getAll()
これは、必要な構成を反映する必要があります。
Spark 2.3.1の設定を更新
デフォルトのspark構成を変更するには、次の手順を実行できます。
必要なクラスをインポート
from pyspark.conf import SparkConf
from pyspark.sql import SparkSession
デフォルト設定を取得
spark.sparkContext._conf.getAll()
デフォルト設定を更新
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')])
現在のSparkセッションを停止する
spark.sparkContext.stop()
Sparkセッションの作成
spark = SparkSession.builder.config(conf=conf).getOrCreate()
設定で「spark.driver.Host」を「localhost」に設定するとうまくいきます
spark = SparkSession \
.builder \
.appName("MyApp") \
.config("spark.driver.Host", "localhost") \
.getOrCreate()