SparkSQL基礎

一.sparkSQL發展歷程及定義

1.發展歷程
    Hive——>shark(Hive on Spark)-->SparkSQL
2.官方定義
     (1)處理結果化數據的spark模塊
           什麼是結果化數據???
              包含列名 + 列值 + 列類型的數據
     (2)提供了一個分佈式數據處理抽象:DataFrame
     (3)提供一個分佈式sql引擎
3.開發願景
    寫更少的代碼
    讀更少的數據
    做最大的優化

二.sparkSQL和shark的區別

shark:
    完全依賴hive和spark:
           依賴hive的hql解析模塊
           依賴hihve的元數據管理
           依賴spark的rdd的操作
    問題:
           shark的版本迭代依賴hive和spark的版本迭代
           shark的後期的代碼維護和優化比較困難

sparkSQL:

    catalyst:hql解析模塊
         先產生邏輯計劃,然後再產生物理計劃
    SparkSQL1.x:對於訪問hive中的數據,需要依賴hive的metastore服務
    SparkSQL2.x:完全不需要依賴hive的metastore服務
    DataFrame是SparkSQL中的主要抽象,是一個核心

三.SparkSQL和hive的區別

 1.和Hive的比較
    支持UDF、UDAF的創建
    是一個庫,而不是一個框架
    元數據管理可選
    支持兩種方式獲取數據:
      HQL/SQL
      DSL(Domain Specific Language)
    提供了Hive Thrift Server(基於hiveserver2服務)
    提交JDBC/ODBC連接
2.已有的BI報表可以通過spark提供的jdbc接口獲取spark中的數據
3.可以支持多種語言

四.Spark和Hive的集成

1.要求Spark的編譯支持hive:
     -Phive -Phive-thriftserver

2.配置相關參數
    cd /opt/cdh-5.3.6/spark/conf
    創建hive-site.xml的軟連接
       ln -s /opt/cdh-5.3.6/hive/conf/hive-site.xml
    或者將hive-site.xml複製到spark的conf文件夾中

3.根據hive的配置參數不同,採用不同的步驟:
    參數是:hive.metastore.uris
        (1)給定該參數的值
           啓動hive的metastore服務
             cd /opt/cdh-5.3.6/hive/
             bin/hive --service metastore &
             ## 看到Starting Hive Metastore Server,表示成功
        (2)如果沒有給定該參數的中,默認情況
           在hive-site.xml中必須給定元數據管理庫的driver、url、username和pasword,將對應數據庫的驅動添加到spark的classpath中

4.直接運行spark/bin/spark-sql的即可
    bin/spark-sql ## hive中能夠執行的hql語句在這裏都可以執行

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