__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 是 Spark-2.0 引入的新概念。SparkSession
为用户提供了统一的切入点,来让用户学习 Spark 的各项功能。
pyspark.sql.SparkSession
在 Spark 的早期版本中,SparkContext 是 Spark 的主要切入点,由于 RDD 是主要的 API,我们通过 sparkContext 来创建和操作 RDD。对于每个其他的 API,我们需要使用不同的 context。例如:
Spark Streaming
,我们需要使用 StreamingContext
Spark SQL
,使用 SQLContext
Hive
,使用 HiveContext
但是随着 DataSet
和 DataFrame
的 API 逐渐成为标准的 API,就需要为他们建立接入点。所以在 Spark2.0 中,引入SparkSession
作为 DataSet
和 DataFrame
API 的切入点,SparkSession
封装了 SparkConf
、SparkContext
和 SQLContext
。为了向后兼容,SQLContext
和 HiveContext
也被保存下来。所以我们现在实际写程序时,只需要定义一个SparkSession
对象就可以了。
#example
from pyspark.sql import SparkSession
spark = SparkSession\
.builder\
.appName('exam1')\
.enableHiveSupport()\
.getOrCreate()