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