启动 SparkSession 的区别
Posted
技术标签:
【中文标题】启动 SparkSession 的区别【英文标题】:Difference in starting a SparkSession 【发布时间】:2018-06-25 09:28:11 【问题描述】:我对 Spark 比较陌生,但我可以看到这两种方法都可以启动 spark 会话。有人可以强调在这两种方法中启动 spark 会话的区别和局限性吗?为什么有两种方法可以做到这一点?
另外一种方法是
这里是代码:
# Find path to PySpark.
import collections
import findspark
findspark.init()
# Import PySpark and initialize SparkContext object.
import pyspark
from pyspark.sql import SparkSession
conf = pyspark.SparkConf().setMaster("local[*]").setAppName("RatingsHistogram")
sc = pyspark.SparkContext(conf = conf)
spark = SparkSession(sc)
print('The Spark Version used is "0"\n\
The python version used is "1"\n\
The default parallelism is "2"\n\
The default number of partitions is "3"'.format(sc.version,sc.pythonVer,sc.defaultParallelism,sc.defaultMinPartitions))
另外一个代码是
# Find path to PySpark.
import collections
import findspark
findspark.init()
# Import PySpark and initialize SparkContext object.
import pyspark
from pyspark.sql import SparkSession
spark = SparkSession.builder.appName('Basics').getOrCreate()
print(spark.version)
【问题讨论】:
【参考方案1】:区别非常细微。
SparkContext 方法允许您创建普通的 sparksession。您不能直接与其他 API 交互。如果您想与其他 API 交互,您必须创建不同的上下文。
使用 SessionBuilder 方法,您可以直接与 Hive、Spark Streaming 交互,因为所有 API 都与之集成。不需要为每个 API 创建不同的上下文。
请参考Spark Documentation
请参考SparkContext vs SparkSession
【讨论】:
我同意你的看法。我在答案中添加了更多输入。如果觉得有帮助,欢迎采纳! 明确地以清晰的方式回答了这个问题,很高兴扩展您的答案并添加更多资源,让更多的人发现它是有益的,谢谢!以上是关于启动 SparkSession 的区别的主要内容,如果未能解决你的问题,请参考以下文章
SparkSession.sql 和 Dataset.sqlContext.sql 有啥区别?
`pyspark.sql.SparkSession.sql` 和 `SQLContext.read.format()` 有啥区别?
PySpark 中的 SparkSession 和 SparkContext 启动
SparkSession 中的 udf 和 pyspark.sql.functions 中的 udf 有啥区别