启动 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 有啥区别

GCP Dataproc 节点中没有资源来启动新的 SparkSession

SparkContext 和 SparkSession:如何获得“parallelizePairs()”?