私の質問は非常に基本的です。私のコードは正常に動作しています。しかし、次の 2 点がよくわかりません。
1) spark-submit を使用して pyspark ジョブを送信するとき、このような spark セッション オブジェクトを作成する必要がありますか? 私のスクリプトで:
from pyspark.sql import SparkSession,SQLContext
from pyspark.conf import SparkConf
spark = SparkSession \
.builder \
.enableHiveSupport() \
.appName("test") \
.getOrCreate()
print(spark)
sqlContext = SQLContext(spark)
または、スクリプトを作成せずに、スクリプト内の spark セッション オブジェクトに直接アクセスできます。
from pyspark.sql import SparkSession,SQLContext
from pyspark.conf import SparkConf
print(spark) -- this can be ***sc*** not sure I am using spark-2
sqlContext = SQLContext(spark)
スパークセッションオブジェクトが利用可能な場合、以下のような構成プロパティを追加する方法、またはハイブサポートを有効にする方法。
spark = SparkSession \
.builder \
.enableHiveSupport() \
.config(conf=SparkConf().set("spark.driver.maxResultSize", "2g")) \
.appName("test") \
.getOrCreate()
2) 別のアプローチは、spark-submit を使用しないことです。Python コードを記述して、spark-session オブジェクトを生成し、このように使用できます。
私の疑問は、spark-submit を使用してジョブを送信し、上記のように spark セッション オブジェクトを作成した場合、最終的に 2 つの spark セッションを作成することになりますか?
ステップ2の方法よりもspark-submitを使用することの利点を誰かが説明してくれれば、非常に役に立ちます。また、コマンド ラインから spark-submit を使用してジョブを呼び出す場合、spark-session オブジェクトを作成する必要がありますか?