目錄
-
介紹
Spark SQL是Spark用來處理結構化數據的一個模塊。
Spark SQL還提供了多種使用方式,包括DataFrames API和Datasets API。但無論是哪種API或者是編程語言,它們都是基於同樣的執行引擎,因此你可以在不同的API之間隨意切換,它們各有各的特點。
官網:http://spark.apache.org/sql/
-
特點
易整合
可以使用java、scala、python、R等語言的API操作。
統一的數據訪問
連接到任何數據源的方式相同。
兼容Hive
支持hiveHQL的語法。
兼容hive(元數據庫、SQL語法、UDF、序列化、反序列化機制)
標準的數據連接
可以使用行業標準的JDBC或ODBC連接
-
SQL優缺點
SQL的優點
表達非常清晰,難度低,易學習。
SQL的缺點
複雜分析 SQL嵌套較多:試想一下3層嵌套的 SQL維護起來應該挺力不從心的吧
機器學習較難:試想一下如果使用SQL來實現機器學習算法也挺爲難的吧
-
Hive和SparkSQL
Hive是將SQL轉爲MapReduce
SparkSQL可以理解成是將SQL解析成'RDD'優化再執行
-
DataFrame
DataFrame是一種以RDD爲基礎的帶有Schema元信息的分佈式數據集,類似於傳統數據庫的二維表格
-
DataSet
1.DataSet是保存了更多的描述信息,類型信息的分佈式數據集。
2.與RDD相比,保存了更多的描述信息,概念上等同於關係型數據庫中的二維表。
3.與DataFrame相比,保存了類型信息,是強類型的,提供了編譯時類型檢查,調用Dataset的方法先會生成邏輯計劃,然後被spark的優化器進行優化,最終生成物理計劃,然後提交到集羣中運行!
DataSet包含了DataFrame的功能,Spark2.0中兩者統一,DataFrame表示爲DataSet[Row],即DataSet的子集。DataFrame其實就是Dateset[Row]
-
RDD&DataFrame&DataSet的區別
RDD[Person]:以Person爲類型參數,但不瞭解 其內部結構。
DataFrame:提供了詳細的結構信息schema列的名稱和類型。這樣看起來就像一張表了
DataSet[Person]:不光有schema信息,還有類型信息