1.Spark SQL概述
1)Spark SQL是Spark核心功能的一部分,是在2014年4月份Spark1.0版本時發布的。
2)Spark SQL可以直接運行SQL或者HiveQL語句
3)BI工具通過JDBC連接SparkSQL查詢數據
4)Spark SQL支持Python、Scala、Java和R語言
5)Spark SQL不僅僅是SQL
6)Spark SQL遠遠比SQL要強大
7)Spark SQL處理數據架構
8)Spark SQL簡介
Spark SQL is a Spark module for structured data processing
9)Spark SQL的願景
a)Write less code
對不同的數據類型使用統一的接口來讀寫。
b)Read less data
提升大數據處理速度最有效的方法就是忽略無關的數據。
(1)使用列式存儲(columnar formats),比如Parquet、ORC、RCFile
(2)使用分區裁剪(partitioningpruning),比如按天分區,按小時分區等
(3)利用數據文件中附帶的統計信息進行剪枝:例如每段數據都帶有最大值、最小值和NULL值等統計信息,當某一數據段肯定不包含查詢條件的目標數據時,可以直接跳過這段數據。(例如字段age某段最大值為20,但查詢條件是>50歲的人時,顯然可以直接跳過這段)
(4)將查詢源中的各種信息下推至數據源處,從而充分利用數據源自身的優化能力來完成剪枝、過濾條件下推等優化。
c)Let the optimizer do the hard work
Catalyst優化器對SQL語句進行優化,從而得到更有效的執行方案。即使我們在寫SQL的時候沒有考慮這些優化的細節,Catalyst也可以幫我們做到不錯的優化結果。
2.Spark SQL服務架構
3.Spark SQL 與Hive集成(spark-shell)
1)需要配置的項目
a)將hive的配置文件hive-site.xml拷貝到spark conf目錄,同時添加metastore的url配置(對應hive安裝節點,我的為3節點)。
修改完后再發送給其他節點
b)拷貝hive中的mysql jar包到spark的jar目錄下,再發送給其他節點
c)檢查spark-env.sh 文件中的配置項,沒有添加,有則跳過
2)啟動服務
a)檢查mysql是否啟動
b)啟動hive metastore服務
c)啟動hive
本地kfk.txt文件
d)啟動spark-shell
4.Spark SQL 與Hive集成(spark-sql)
啟動spark-sql
5.Spark SQL之ThriftServer和beeline使用
通過使用beeline可以實現啟動一個應用給多個用戶同時操作,而不必要啟動多個應用,這樣更加節省資源。
1)啟動ThriftServer
2)啟動beeline
6.Spark SQL與MySQL集成
啟動spark-shell
7.Spark SQL與HBase集成
Spark SQL與HBase集成,其核心就是Spark Sql通過hive外部表來獲取HBase的表數據。
1)拷貝HBase的包和hive包到spark 的jars目錄下
2)啟動Hbase
3)啟動Hive
4)啟動spark-shell
這一步如果報NoClassDefFoundError錯誤請參考博文:Spark-HBase集成錯誤之 java.lang.NoClassDefFoundError: org/htrace/Trace
到這,Spark與HBase的集成就算成功了!
以上就是博主為大家介紹的這一板塊的主要內容,這都是博主自己的學習過程,希望能給大家帶來一定的指導作用,有用的還望大家點個支持,如果對你沒用也望包涵,有錯誤煩請指出。如有期待可關注博主以第一時間獲取更新哦,謝謝!同時也歡迎轉載,但必須在博文明顯位置標注原文地址,解釋權歸博主所有!