深入理解SparkSession(未完成)

版本变化

spark1.x

在Spark1.6中使用的为Hive on spark,主要是依赖hive生成spark程序,有两个核心组件SQLcontext和HiveContext。

// 创建SparkConf
val sparkConf = new SparkConf().setAppName("SparkSessionZipsExample").setMaster("local")
// 使用SparkConf创建SparkContext
val sc = new SparkContext(sparkConf).set("spark.some.config.option", "some-value")
// 使用SparkContext创建SQLContext
val sqlContext = new org.apache.spark.sql.SQLContext(sc)

spark2.x

而Spark2.0中使用的就是SparkSQL,是后继的全新产品,解除了对Hive的依赖。

从Spark2.0以上的版本开始,spark是使用全新的SparkSession接口代替Spark1.6中的SQLcontext和HiveContext来实现对数据的ETL等工作,并且实现了SQLcontext和HiveContext的所有功能。

在新版本中并不需要之前那么繁琐的创建很多对象,只需要创建一个SparkSession对象即可。

SparkSession支持从不同的数据源加载数据,并把数据转换成DataFrame,并支持把DataFrame转换成SQLContext自身中的表。

然后使用SQL语句来操作数据,也提供了HiveQL以及其他依赖于Hive的功能支持。

与SparkContext的区别和联系

区别

  • SparkContext是基于RDD编程的,主要通过如下方法生成RDD
    1. textFile
    2. hadoopFile
    3. parallelize
    4. objectFile
    5. sequenceFile
    6. binaryFile
  • SparkSession主要通过DataFrame和Dataset进行编程
  • SparkSession可以通过read方法调用DataFrameReader类中定义的外部数据源读取方法,也可以自定义其他外部数据源的读取。
  • 通过createDataFrame方法,将RDD转化为Row对象,关联上StructType,可以将RDD转化为DataFrame

联系

  • SparkSession由SparkContext创建,即SC为SS的类成员属性,因此SparkSession包含SparkContext的功能

SparkSession的作用

功能简述

public方法 功能
createDataFrame 将rdd或者list转化为dataframe
read 提供多种外部数据源格式的读取
udf
sql
baseRelationToDataFrame
createDataset
experimental
listenerManager
newSession
range
readStream
streams
teble
time
version

成员属性简述

public属性 类型 功能
sparkContext SparkContext
sharedState SharedState lazy
sessionState SessionState lazy
sqlContext SQLContext
conf RuntimeConfig lazy
emptyDataFrame DataFrame lazy
catalog Catalog lazy
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章