文章目錄
- 3.1 導讀
- 3.2 Hive概述
- 1. **Hive特性與應用場景:**
- 2. Hive 與傳統資料倉庫比較
- 3. Hive 的優點
- 3.3 Hive的架構與功能
- 1. Hive的架構
- 2. Hive 運行流程
- 3. Hive 資料存盤模型
- **磁區與分桶**
- 托管表與外部表
- 4. Hive 支持的函式
- 3.4 Hive 基本操作
- 1. 運行Hive服務
- 2. Hive SQL
- DDL
- DML
- DQL
- 3.5 課后習題
3.1 導讀
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-ESAu8FZw-1645950065983)(https://secure2.wostatic.cn/static/eX3rF26Rx8iaz83CW5CCD2/image.png)]](https://img.uj5u.com/2022/03/01/302348010713191.png)
能夠通過寫SQL陳述句就可以進行大資料的統計分析?
通過HQL(類似SQL)的陳述句可以實作
Hive中寫HQL陳述句最終轉換成了什么程式?
MapReduce
Hive提供了哪些客戶端介面供用戶使用?
Hive CLI(Hive Command Line,Hive命令列),客戶端可以直接在命令列模式下進行操作,
HWI(Hive Web Interface,Hive Web介面),Hive提供了更直觀的Web界面,
Hiveserver,Hive提供了Thrift服務,Thrift客戶端目前支持C++/Java/PHP/Python/Ruby,
3.2 Hive概述
Apache Hive是基于Hadoop的資料倉庫軟體,可以查詢和管理PB級別的分布式資料,資料倉庫軟體使用SQL讀取、寫入和管理分布式存盤中的大型資料集,可以將表結構投影到已經存盤的資料上,提供了命令列工具和DBC驅動程式以將用戶連接到Hive,
1. Hive特性與應用場景:
- 靈活方便的ETL (extract/transform/load),
- 支持Tez, Spark等多種計算引擎,
- 可直接訪問HDFS檔案以及HBase,
- 易用易編程,
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-EJrMTDcY-1645950065985)(https://secure2.wostatic.cn/static/p5wfymxFmuGH2FpoDgDP58/image.png)]](https://img.uj5u.com/2022/03/01/302348010713192.png)
- Hive 構建在基于靜態批處理的Hadoop 之上,Hadoop 通常都有較高的延遲并且在作業提交和調度的時候需要大量的開銷,
- Hive 并不能夠在大規模資料集上實作低延遲快速的查詢,例如,Hive 在幾百MB 的資料集上執行查詢一般有分鐘級的時間延遲,因此,Hive 并不適合那些需要低延遲的應用,例如聯機事務處理(OLTP),
- Hive 并非為聯機事務處理而設計,Hive 并不提供實時的查詢和基于行級的資料更新操作, Hive 的最佳使用場合是大資料集的批處理作業,例如,網路日志分析,
2. Hive 與傳統資料倉庫比較
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-fvaTtOEz-1645950065986)(https://secure2.wostatic.cn/static/ox7bcS1AgsZNm858Ab3aRx/image.png)]](https://img.uj5u.com/2022/03/01/302348010713193.png)
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-qr2SbXnk-1645950065986)(https://secure2.wostatic.cn/static/dDVkhdwSvNP9uRV9SjERba/image.png)]](https://img.uj5u.com/2022/03/01/302348010713194.png)
3. Hive 的優點
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-yQuvvFRk-1645950065987)(https://secure2.wostatic.cn/static/hip78zCHF3Wj7XWyYdyQ8R/image.png)]](https://img.uj5u.com/2022/03/01/302348010713195.png)
- HiveServer Hive:對外提供SQL服務的主要行程,
- MetaStore Hive:提供元資料資訊的行程,可供HiveServer,SparkSQL,Oozie等組件呼叫,
- Beeline hive:的命令列客戶端,
- JDBC java:統一資料庫介面,
- Thrift:一種序列化、通信協議,
- ODBC:基于C/C++的資料庫標準介面,
Thrift是一種介面描述語言和二進制通訊協議,它被用來定義和創建跨語言的服務,它被當作一個遠程程序呼叫(RPC)框架來使用,是由Facebook為“大規模跨語言服務開發”而開發的,
3.3 Hive的架構與功能
1. Hive的架構
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-WoxZUuVn-1645950065987)(https://secure2.wostatic.cn/static/qGbPN79RnsPLdTXskaoc2k/image.png)]](https://img.uj5u.com/2022/03/01/302348010713196.png)
- MetaStore : 存盤表、列和Partition等元資料,通常采用MySQL存盤,
- Driver : 對上層提交的HQL編譯,優化執行序列并執行,管理HiveQL執行的生命周期,并貫穿Hive任務整個執行期間,
- Compiler : 編譯HiveQL并將其轉化為一系列相互依賴的Map/Reduce任務,
- Optimizer : 優化器,分為邏輯優化器和物理優化器,分別對HiveQL生成的執行計劃和 MapReduce任務進行優化,
- Executor : 按照任務的依賴關系分別執行Map/Reduce任務,
- ThriftServer : 提供thrift介面,作為JDBC和ODBC的服務端,并將Hive和其他應用程式集成起來,
- Clients : 包含命令列介面Beeline 和JDBC/ODBC 介面,為用戶訪問提供介面,
- Hive的陳述句最終在Tez、MapReduce、Spark上執行
2. Hive 運行流程
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-eAMLoGQz-1645950065988)(https://secure2.wostatic.cn/static/3zdCKcj8MftK4fYdxeme9W/image.png)]](https://img.uj5u.com/2022/03/01/302348010713197.png)
3. Hive 資料存盤模型
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-WGUooLW6-1645950065988)(https://secure2.wostatic.cn/static/FQS6c7y872QbSQEJb1Can/image.png)]](https://img.uj5u.com/2022/03/01/302348010713198.png)
- 資料庫:創建表時如果不指定資料庫,則默認為default資料庫,
- 表:物理概念,實際對應HDFS上的一個目錄,
- 磁區:對應所在表所在目錄下的一個子目錄,
- 桶:對應表或磁區所在路徑的一個檔案,
- 傾斜資料:資料集中于個別欄位值的場景,比如按照城市磁區時,80%的資料都來自某個 大城市,
- 正常資料:不存在傾斜的資料,
磁區與分桶
對于每一個表或者是磁區,Hive可以進一步組織成桶,也就是說桶是更為細粒度的資料范圍劃分,
- 磁區:資料表可以按照某個欄位的值劃分磁區,
- 每個磁區是一個目錄,
- 磁區數量不固定,
- 磁區下可再有磁區或者桶,
- 桶:資料可以根據桶的方式將不同資料放入不同的桶中,
- 每個桶是一個檔案,
- 建表時指定桶個數,桶內可排序,
- 資料按照某個欄位的值Hash后放入某個桶中,
- 當表格資料量較大時,可對表格進行磁區處理(Partition),便于區域資料的查詢操作,如按時間磁區、按地域磁區,將具有相同性質的資料存盤到同一磁盤塊上,從而加快查詢效率,
- Hive是針對某一列進行分桶,Hive采用對列值哈希,然后除以桶的個數求余的方式決定該條記錄存放在哪個桶中,分桶的好處是可以獲得更高的查詢處理效率,使取樣更高效,
托管表與外部表
Hive可以創建托管表和外部表:
- Hive 創建內部表時,會將資料移動到資料倉庫指向的路徑;若創建外部表,僅記錄資料所 在的路徑, 不對資料的位置做任何改變,(外部表為指標)
- 在洗掉表的時候,內部表的元資料和資料會被一起洗掉, 而外部表只洗掉元資料,不洗掉資料,這樣外部表相對來說更加安全些,資料組織也更加靈活,方便共享源資料,
- 如果所有處理都由Hive完成,建議使用托管表,
- 如果要用Hive和其它工具來處理同一個資料集,建議使用外部表,
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-xpJ2PLlQ-1645950065989)(https://secure2.wostatic.cn/static/kaxTqij7CCRSQyfa2EjD8K/image.png)]](https://img.uj5u.com/2022/03/01/302348010713199.png)
4. Hive 支持的函式
Hive內置函式:
- 數學函式:如四舍五入round( )、向下取整floor( )、絕對值abs( )、隨機函式rand( ) 等
- 日期函式:如回傳日期to-date( )、回傳月month( )、回傳天day( ) 等
- 字串函式:如trim( )、length( )、substr( ) 等
如果內置函式不能滿足用戶需求時,Hive可支持自定義函式,
3.4 Hive 基本操作
1. 運行Hive服務
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-jXOHm6P4-1645950065990)(https://secure2.wostatic.cn/static/3RQcjP78mjPgDgz4dwhe33/image.png)]](https://img.uj5u.com/2022/03/01/3023480107131910.png)
2. Hive SQL
- DDL - 資料定義語言
- 建表、修改表、刪表、磁區、資料型別,
- DML - 資料管理語言
- 資料匯入、資料匯出,
- DQL - 資料查詢語言
- 簡單查詢,
- 復雜查詢Group by、Order by、Join等,
DDL
DDL即資料定義語言,DDL操作都是對元資料的操作,主要包含如下操作:
- Create/Drop/Alter Database;
- Create/Drop/Truncate Table;
- Alter Table/Partition/Column;
- Create/Drop/Alter View;
- Create/Drop Index;
- Create/Drop Function;
- Show;
- Describe,
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-PFEdAi8s-1645950065990)(https://secure2.wostatic.cn/static/nN11gkoBvLMJCtcsHsVZu2/image.png)]](https://img.uj5u.com/2022/03/01/3023480107131911.png)
DML
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-Ktfr7C0P-1645950065991)(https://secure2.wostatic.cn/static/kayQ1H3mbrAyzZPcyZWC97/image.png)]](https://img.uj5u.com/2022/03/01/3023480107131912.png)
DQL
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-QC4Oael0-1645950065991)(https://secure2.wostatic.cn/static/rSX4zLM68f5JzPnWnpAAVA/image.png)]](https://img.uj5u.com/2022/03/01/3023480107131913.png)
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-BbDYwmQ7-1645950065992)(https://secure2.wostatic.cn/static/gfUDEKzdqC5pFNN9uyGYak/image.png)]](https://img.uj5u.com/2022/03/01/3023480107131914.png)
3.5 課后習題
思考題:
-
Hive的使用場景有哪些?
資料挖掘(用戶行為分析,興趣分析,區域展示)
資料匯總(每天/每周用戶點擊數,點擊排行)
非實時分析(日志分析,統計分析)
-
以下關于Hive SQL基本操作描述正確的是?
A. 創建外部表使用external關鍵字,創建普通表需要指定internal關鍵字
創建普通表不需要指定internal關鍵字
B. 創建外部表必須要指定location資訊
不是必須的
C. 加載資料到Hive時源資料必須是HDFS的一個路徑
可以是本地也可以是HDFS加local是從本地復制過去,不加local是從HDFS上剪切過去
D. 創建表時可以指定列分隔符
- √
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-e3eO6iV4-1645950065992)(https://secure2.wostatic.cn/static/acXsb985Paei1co2GLJ2jY/image.png)]](https://img.uj5u.com/2022/03/01/3023480107131915.png)
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-UtR5QdNT-1645950065993)(https://secure2.wostatic.cn/static/7sHbU5gZTGunJDpr4kLwbG/image.png)]](https://img.uj5u.com/2022/03/01/3023480107131916.png)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/434512.html
標籤:其他
上一篇:離線數倉和實時數倉的區別
下一篇:深入理解:分布式和集群
