【SparkSQL】SparkSQL的基本介紹

目錄

介紹

特點

SQL優缺點

Hive和SparkSQL

DataFrame

DataSet

RDD&DataFrame&DataSet的區別


  • 介紹

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信息,還有類型信息

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章