1. 程式人生 > >Spark專案學習-慕課網日誌分析-days2-Spark SQL

Spark專案學習-慕課網日誌分析-days2-Spark SQL

1.Spark SQL 概述

(1)為什麼需要SQL

1)事實上的標準

2)簡單易學

Hive:類似於sql的Hive QL語言 sql==>mapreduce

   特點:基於mapreduce

   改進:基於tez spark

Spark:分散式的基於記憶體的計算框架

hive on spark ==> shark(hive on spark)

    優點:基於spark、基於記憶體的列式儲存、與hive能夠相容

    缺點:hive ql的解析、邏輯執行計劃生成、執行計劃的優化是依賴於hive的,僅僅只是把物理執行計劃從mapreduce作業變成了spark作業

 

2.SQL on Hadoop常用框架

(1)Hive

    1)sql==>mapreduce

    2)metastore:元資料

    3)sql:database、table、view

    4)由facebook開源

(2)impala

    1)cloudera公司:cdh(建議在生產上使用的hadoop系列版本)、cm(具有圖形介面)

    2)sql:自己的守護程序執行的,非mr,基於記憶體的

    3)metastore:元資料

(3)presto

    1)facebook開源,京東用的很多

(4)drill

    1)sql

    2)訪問hdfs rdbms json hbase mangodb s3 hive

(5)Spark SQL

    1)sql

    2)dataframe dataset api

    3)hdfs rdbms json hbase mangodb s3 hive 外部資料來源

    

3.Spark SQL概述(處理結構化資料)

    1)不僅僅有訪問或者操作SQL的功能,還提供了其他的非常豐富的操作:外部資料來源,優化

    2)能夠訪問hive jison parquet等檔案的資料

    3)SQL只是Spark SQL的一個功能

    4)Spark SQL提供了SQL的API DataFrame和Dataset的API

 

4. hive to spark SQL

1.SQLContext/HiveContext/SparkSession的使用

(1)SQLContext 在Spark1.0中使用

(2)HiveContext 在Spark1.0中使用

    1)to use a HiveContext,you do not need to have an hive setup

(3)SparkSession 在Spark2.0中使用

 

 2. Spark-shell/spark-sql的使用

(1)Spark速度比Hive快很多

(2)Spark-shell和Spark-sql用法差不多

執行過程:

    1)解析成邏輯計劃

    2)Spark自身會進行一次計劃優化

    3)生成物理執行計劃,交給Spark執行

(3)過程:

    1)hive-site.xml配置檔案(新增,放到spark下的conf中)

    2)--jars傳遞mysql驅動包

 

3. thriftserver/beeline的使用

(1)首先啟動服務(要使用--jars傳mysql驅動)

(2)啟動beeline beeline -u jdbc:hive2://localhost:10000 -n hadoop  連線到thriftserver

 

4.thriftserver和普通的spark-shell/spark-sql有什麼區別?

(1)spark-shell/spark-sql都是對應的一個spark application

(2)thriftserver,不管啟動多少個客戶端(beeline/code),永遠都是一個spark application

    解決了一個數據共享問題,多個客戶端可以共享資料;(客戶端是指通過JDBC方式連線)

 

5.jdbc方式程式設計訪問

在使用JDBC開發時,一定要記得先啟動thriftserver