Pyspark学习笔记(三)--- SparkContext 与 SparkSession

2021-05-10 11:10:21 浏览数 (1)

Pyspark学习笔记(三)--- SparkContext 与 SparkSession

  • SparkContext
  • SparkSession

SparkContext

__SparkContext__是spark功能的主要入口。 其代表与spark集群的连接,能够用来在集群上创建RDD、累加器、广播变量。 每个JVM里只能存在一个处于激活状态的SparkContext,在创建新的SparkContext之前必须调用stop()来关闭之前的SparkContext.

SparkContext在spark应用中起到了master的作用,掌控了所有Spark的生命活动,统筹全局,除了具体的任务在executor中执行,其他的任务调度、提交、监控、RDD管理等关键活动均由SparkContext主体来完成。

对于普通的使用者来说,了解到这里即可,知道要使用Spark的功能要先创建一个SparkContext对象就行了,后续如何使用该对象的一些方法,只需要查文档即可, pyspark.SparkContext 如果想深入了解SparkContext,推荐这篇博文:https://www.cnblogs.com/xia520pi/p/8609602.html,写的还挺好

SparkSession

SparkSessionSpark-2.0 引入的新概念。SparkSession 为用户提供了统一的切入点,来让用户学习 Spark 的各项功能。 pyspark.sql.SparkSession 在 Spark 的早期版本中,SparkContext 是 Spark 的主要切入点,由于 RDD 是主要的 API,我们通过 sparkContext 来创建和操作 RDD。对于每个其他的 API,我们需要使用不同的 context。例如:

  • 对于 Spark Streaming,我们需要使用 StreamingContext
  • 对于 Spark SQL,使用 SQLContext
  • 对于 Hive,使用 HiveContext

但是随着 DataSetDataFrame 的 API 逐渐成为标准的 API,就需要为他们建立接入点。所以在 Spark2.0 中,引入SparkSession 作为 DataSetDataFrame API 的切入点,SparkSession封装了 SparkConfSparkContextSQLContext。为了向后兼容,SQLContextHiveContext也被保存下来。所以我们现在实际写程序时,只需要定义一个SparkSession对象就可以了。

代码语言:javascript复制
#example
from pyspark.sql import SparkSession
spark = SparkSession
                    .builder
                    .appName('exam1')
                    .enableHiveSupport()
                    .getOrCreate()

0 人点赞