Pyspark学习笔记(三)— SparkContext 与 SparkSession
文章目录
一、什么是SparkContext?
SparkContext
从 Spark 1.x(JavaSparkContext for Java)开始可用,在 2.0 中引入 SparkSession 之前,它被用作 Spark 和 PySpark 的入口点。创建 SparkContext 是使用 RDD 编程并连接到 Spark Cluster 的第一步。
在org.apache.spark包中定义,用于以编程方式在集群上创建 Spark RDD、累加器和广播变量。 它的对象sc 是 spark-shell 中可用的默认变量,可以使用SparkContext类以编程方式创建。
注意,每个 JVM 只能创建一个 SparkContext,如果您想创建另一个新 SparkContext,您应该stop()在创建新SparkContext之前停止现有 SparkContext。
官方文档: pyspark.SparkContext
#使用python语言创建sc变量的示例:
from pyspark.context import SparkContext
sc = SparkContext('local', 'test')
sc2 = SparkContext('local', 'test2')
二、什么是 SparkSession
SparkSession
在 2.0 版本中引入,它是底层 PySpark 功能的入口点,以便以编程方式创建 PySpark RDD、DataFrame。
在Spark 2.0 及后续版本中,可以通过 pyspark.sql import SparkSession 引入新类 SparkSession ( )
;它是我们在 2.0 版本(SQLContext 和 HiveContext 等)之前拥有的所有不同上下文的组合类,为用户提供了统一的切入点。
因此,创建 SparkSession 实例将是我们使用 RDD、DataFrame 和 Dataset 编写程序的第一条语句,SparkSession 将使用SparkSession.builder构建器模式创建。
虽然 SparkContext 在 2.0 之前曾经是一个入口点,但它并没有完全被完全 SparkSession 取代,SparkContext 的许多特性在 Spark 2.0 及更高版本中仍然可用和使用。SparkSession 在内部使用 SparkSession 提供的配置创建 SparkConfig 和 SparkContext。
SparkSession 还包括在不同 contexts中可用的所有 API:
·Spark Context,
·SQL Context,
·Streaming Context,
·Hive Context.
官方文档:pyspark.sql.SparkSession
可以使用SparkSession.builder
或 SparkSession.newSession
来创建任意数量的 SparkSession 对象。
示例:
import pyspark
from pyspark.sql import SparkSession
spark = SparkSession.builder.master("local[1]") \
.appName('SparkByExamples.com') \
.getOrCreate()
sparkSession3 = SparkSession.newSession
三、SparkSession 常用方法
version
返回运行应用程序的 Spark 版本,可能是集群配置的 Spark 版本。
createDataFrame()
这会从集合和RDD创建一个 DataFrame;
read()
返回DataFrameReader类的实例,用于将csv、parquet、avro 和更多文件格式的记录读取到 DataFrame 中;
readStream()
返回DataStreamReader 类的实例, 用于读取流数据。可用于将流数据读入 DataFrame。
sparkContext()
–返回一个SparkContext。
sql(sqlQuery)
– 执行上述 SQL 后返回一个 DataFrame。
sqlContext()
– 返回SQLContext。
stop()
– 停止当前SparkContext。
table(tableName)
– 返回表或视图的 DataFrame。
udf()
– 创建一个PySpark UDF 以在 DataFrame、Dataset 和 SQL上使用它。
系列文章目录:
①.Pyspark学习笔记(二)— spark-submit命令
②.Pyspark学习笔记(三)— SparkContext 与 SparkSession
③.Pyspark学习笔记(四)弹性分布式数据集 RDD 综述(上)
④Pyspark学习笔记(四)弹性分布式数据集 RDD 综述(下)
⑤Pyspark学习笔记(五)RDD操作(一)_RDD转换操作