Spark学习—— (4+) SparkContext与SparkSession

SparkContext与SparkSession

SparkContext、SparkSession是对Spark计算集群的一个连接,当我们通过shell启动Spark时,会默认创建,如SparkContext会默认创建一个命名为sc的实例,而当自己编写应用要自己创建。

1. SparkContext

1.1 是什么?

Spark学习—— (4+) SparkContext与SparkSession_第1张图片

如上图,SparkContext是Spark中Driver程序的一部分,向资源管理器cluster manager(可以是mesos、yarn、standalone)申请spark应用所需的资源executor,资源管理器在各个worker上分配一定的executor。

当我们编写pyspark程序时,SparkContext是使用spark功能的入口点

SparkContext是Pyspark中的一个类,初始化时需要给定master、appName等信息,详细参数可参考大数据入门与实战-PySpark的使用教程。

1.2 简单用法

SparkContext主要用于创建和操作RDD。

终端输入pyspark,配置为ipython-notebook启动,可参考Spark学习—— (4) 基本使用(Python)

当我们以这种方式启动时,默认会创建一个SparkContext,命名为sc,如下:

Spark学习—— (4+) SparkContext与SparkSession_第2张图片

读取文件并创建RDD如下(先新建一个测试文件),可以看到通过sc读取文本文件,得到RDD格式的数据

Spark学习—— (4+) SparkContext与SparkSession_第3张图片

创建RDD后,可以对其进行Transformation和Action的操作。

2. SparkSession

2.1 是什么?

SparkSession是Spark2.x后引入的概念。在2.x之前,对于不同的功能,需要使用不同的Context——

  • 创建和操作RDD时,使用SparkContext
  • 使用Streaming时,使用StreamingContext
  • 使用SQL时,使用sqlContext
  • 使用Hive时,使用HiveContext

在2.x中,为了统一上述的Context,引入SparkSession,实质上是SQLContext、HiveContext、SparkContext的组合。

2.2 简单用法

  1. 启动pyspark时,默认会创建一个SparkSession对象,命名为spark,如下:
  1. 使用其中的spark Context成员,与上面的SparkContext用法相同,如下:
Spark学习—— (4+) SparkContext与SparkSession_第4张图片
  1. 在2.x中,官方建议使用Dataset代替RDD。DataFrame是按列组织的DataSet,Python不支持DataSet但支持DataFrame,如下:
Spark学习—— (4+) SparkContext与SparkSession_第5张图片

Reference

  1. SparkContext、SparkConf和SparkSession之间的联系及其初始化

  2. 大数据入门与实战-PySpark的使用教程

  3. Spark学习—— (4) 基本使用(Python)

  4. spark学习-SparkSQL–12-SparkSession与SparkContext

你可能感兴趣的:(大数据学习记录)