深入理解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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章