大數據技術暑期實習五___SparkSQL

1、概述

  1.什麼是Spark SQL

Spark SQL是Spark用來處理結構化數據的一個模塊,它提供了2個編程抽象:DataFrame和DataSet,而且做爲分佈式SQL查詢引擎的做用。數據庫

前邊已經學習了Hive,它是將Hive SQL轉換成MapReduce而後提交到集羣上執行,大大簡化了編寫MapReduc的程序的複雜性,因爲MapReduce這種計算模型執行效率比較慢,Spark SQL應運而生,它是將Spark SQL轉換成RDD,而後提交到集羣執行,執行效率很是快!編程

  2.Spark SQL特色

   1)易整合

 

   2)統一的數據訪問方式

 

 

    3)兼容Hive

 

 

    4)標準的數據鏈接

 

  3.DataFrame

與RDD相似,DataFrame也是一個分佈式數據容器。然而DataFrame更像傳統數據庫的二維表格,除了數據之外,還記錄數據的結構信息,即schema。同時,與Hive相似,DataFrame也支持嵌套數據類型(struct、array和map)。從API易用性的角度上看,DataFrame API提供的是一套高層的關係操做,比函數式的RDD API要更加友好,門檻更低。安全

  4.DataSet

   1)是Dataframe API的一個擴展,是Spark最新的數據抽象。分佈式

   2)用戶友好的API風格,既具備類型安全檢查也具備Dataframe的查詢優化特性。函數

   3)Dataset支持編解碼器,當須要訪問非堆上的數據時能夠避免反序列化整個對象,提升了效率。學習

   4)樣例類被用來在Dataset中定義數據的結構信息,樣例類中每一個屬性的名稱直接映射到DataSet中的字段名稱。優化

   5) Dataframe是Dataset的特列,DataFrame=Dataset[Row] ,因此能夠經過as方法將Dataframe轉換爲Dataset。Row是一個類型,跟Car、Person這些的類型同樣,全部的表結構信息我都用Row來表示。spa

   6)DataSet是強類型的。好比能夠有Dataset[Car],Dataset[Person].對象

   7)DataFrame只是知道字段,可是不知道字段的類型,因此在執行這些操做的時候是沒辦法在編譯的時候檢查是否類型失敗的,好比你能夠對一個String進行減法操做,在執行的時候才報錯,而DataSet不單單知道字段,並且知道字段類型,因此有更嚴格的錯誤檢查。就跟JSON對象和類對象之間的類比。blog

相關文章
相關標籤/搜索