我的问题非常基本,我的代码运行良好。但我不清楚这两点:
1)当我们提交任何使用火花-提交的工作时,我们是否需要像这样创建火花会话对象?在我的剧本里:
from pyspark.sql import SparkSession,SQLContext
from pyspark.conf import SparkConf
spark = SparkSession \
.builder \
.enableHiveSupport() \
.appName("test") \
.getOrCreate()
print(spark)
sqlContext = SQLContext(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)如果火花会话对象可用,那么我如何添加配置属性,比如下面,或者如何启用hive支持。
spark = SparkSession \
.builder \
.enableHiveSupport() \
.config(conf=SparkConf().set("spark.driver.maxResultSize", "2g")) \
.appName("test") \
.getOrCreate() 2)另一种方法是不使用submit,我可以编写python代码来生成火花-会话对象,并像this一样使用它。
我的怀疑是,如果我提交工作使用火花提交和创建火花会话对象,如上文所述,我是否最终创建了两个火花会话?
如果有人能解释我在第二步中使用火花提交方法的额外优势,那将是非常有帮助的。如果我使用命令行中的星火提交调用作业,是否需要创建星火会话对象?
发布于 2017-09-12 14:45:58
当我们提交任何pySpark作业使用火花提交,我们需要创建火花会话对象吗?
是的,它不是只需要在shell的情况下使用。
我的疑问是,如果我提交作业使用火花提交和创建火花会话对象,如上面提到的,我最终创建两个火花会话?
TL,DR;否
如果我们检查你写的代码
spark = SparkSession \
.builder \
.enableHiveSupport() \
.config(conf=SparkConf().set("spark.driver.maxResultSize", "2g")) \
.appName("test") \
.getOrCreate() 观察getOrCreate(),它将在任何时候只处理一个SparkSession Object (spark)。
我建议在本地创建上下文/会话,并使代码纯净(因为不依赖于对象的其他来源)。
https://stackoverflow.com/questions/46173262
复制相似问题