Spark菜鳥進階
關於 Spark SQL/DataFrame( Spark1.4.1 版本)
Spark SQL 是 Spark 生態系統裡用於處理結構化大資料的模組,該模組裡最重要的概念就是 DataFrame, Spark 的 DataFrame 是基於早期版本中的 SchemaRDD。Spark DataFrame 以 RDD 為基礎,但是帶有 Schema 資訊,它類似於傳統資料庫中的二維表格。
Spark SQL 模組目前支援將多種外部資料來源的資料轉化為 DataFrame,並像操作 RDD 或者將其註冊為臨時表的方式處理和分析這些資料。當前支援的資料來源有:
Json
文字檔案
RDD
關係資料庫
Hive
Parquet
一旦將 DataFrame 註冊成臨時表,我們就可以使用類 SQL 的方式操作這些資料。
Spark 2.0介紹
RDD是Spark中重要的API,然而它的建立和操作得使用sparkContext提供的API;對於RDD之外的其他東西,我們需要使用其他的Context。比如對於流處理來說,我們得使用StreamingContext;對於SQL得使用sqlContext;而對於hive得使用HiveContext。然而DataSet和Dataframe提供的API逐漸稱為新的標準API,我們需要一個切入點來構建它們,所以在 Spark 2.0中我們引入了一個新的切入點(entry point):SparkSession
SparkSession實質上是SQLContext和HiveContext的組合(未來可能還會加上StreamingContext),所以在SQLContext和HiveContext上可用的API在SparkSession上同樣是可以使用的。SparkSession內部封裝了sparkContext,所以計算實際上是由sparkContext完成的。
SparkSession的設計遵循了工廠設計模式
//建立SQLSession
SparkSession sparkSession = SparkSession.builder.
master("local")
.appName("spark session example")
.getOrCreate();
//建立hiveContext
SparkSession sparkSession = SparkSession.builder.
master("local")
.appName("spark session example")
.enableHiveSupport ()
.getOrCreate();