我的问题非常基本,我的代码运行良好。但我不清楚这两点:
1)当我们使用 spark-submit 提交任何 pyspark 作业时,我们是否需要像这样创建 spark session 对象?在我的脚本中:
from pyspark.sql import SparkSession,SQLContext
from pyspark.conf import SparkConf
spark = SparkSession \
.builder \
.enableHiveSupport() \
.appName("test") \
.getOrCreate()
print(spark)
sqlContext = SQLContext(spark)
或者我可以直接在我的脚本中访问 spark session 对象而不创建它。
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 会话对象,我最终会创建两个 spark 会话吗?
如果有人可以向我解释使用 spark-submit 超过第 2 步方法的额外优势,那将非常有帮助。如果我从命令行使用 spark-submit 调用作业,我是否需要创建 spark-session 对象