您好,登錄后才能下訂單哦!
這篇文章主要介紹“Hive的基本概念”,在日常操作中,相信很多人在Hive的基本概念問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Hive的基本概念”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
Hive簡介
什么是Hive
Hive是基于Hadoop的一個數據倉庫工具,可以將結構化的數據文件映射為一張數據庫表,并提供類SQL查詢功能(HQL)。
其本質是將SQL轉換為MapReduce的任務進行運算,底層由HDFS來提供數據的存儲,hive可以理解為一個將SQL轉換為MapReduce的任務的工具。
Hive可以對數據進行存儲與計算
數據存儲依賴于HDFS
數據計算依賴于MapReduce
為什么使用Hive
直接使用hadoop所面臨的問題
人員學習成本太高
項目周期要求太短
MapReduce實現復雜查詢邏輯開發難度太大
為什么要使用Hive
操作接口采用類SQL語法,提供快速開發的能力。
避免了去寫MapReduce,減少開發人員的學習成本。
功能擴展很方便。
Hive的特點
可擴展
Hive可以自由的擴展集群的規模,一般情況下不需要重啟服務。
延展性
Hive支持用戶自定義函數,用戶可以根據自己的需求來實現自己的函數。
容錯
良好的容錯性,節點出現問題SQL仍可完成執行。
Hive架構
元數據:
描述數據的數據就是元數據
表的名字,
表的列
列的類型
Hive內部執行過程:
解釋器 -> 編譯器(會使用到元數據) -> 優化器 -> 執行器
基本組成
用戶接口:包括CLI、JDBC/ODBC、WebGUI。其中,CLI(command line interface)為shell命令行;JDBC/ODBC是Hive的JAVA實現,與傳統數據庫JDBC類似;WebGUI是通過瀏覽器訪問Hive。
元數據存儲:通常是存儲在關系數據庫如mysql/derby中。Hive 將元數據存儲在數據庫中。Hive 中的元數據包括表的名字,表的列和分區及其屬性,表的屬性(是否為外部表等),表的數據所在目錄等。
**解釋器、編譯器、優化器、執行器:**完成HQL 查詢語句從詞法分析、語法分析、編譯、優化以及查詢計劃的生成。生成的查詢計劃存儲在HDFS 中,并在隨后有MapReduce 調用執行。
Hive與Hadoop的關系
Hive利用HDFS存儲數據,利用MapReduce查詢分析數據
Hive與傳統數據庫對比
hive用于海量數據的離線數據分析
1.數據格式。Hive中沒有定義專門的數據格式
數據格式可以由用戶指定,用戶定義數據格式需要指定三個屬性:
列分隔符(通常為空格、”\t”、”\x001″)、
行分隔符(”\n”)以及
讀取文件數據的方法(Hive 中默認有三個文件格式 TextFile,SequenceFile 以及 RCFile)。
2.Hive在加載數據的過程中,不需要從用戶數據格式到 Hive 定義的數據格式的轉換。
3.Hive 在加載的過程中==不會對數據本身進行任何修改,甚至不會對數據進行掃描。==而只是將數據內容復制或者移動到相應的 HDFS 目錄中。
4.Hive 中不支持對數據的改寫和添加,所有的數據都是在加載的時候中確定好的。
5.Hive 在加載數據的過程中不會對數據中的某些 Key 建立索引。Hive 要訪問數據中滿足條件的特定值時,需要暴力掃描整個數據,因此訪問延遲較高。由于數據的訪問延遲較高,決定了Hive 不適合在線數據查詢。
6.Hive 是建立在 Hadoop 之上的,因此 Hive 的可擴展性是和 Hadoop 的可擴展性是一致的。
總結:hive具有sql數據庫的外表,但應用場景完全不同,hive只適合用來做批量數據統計分析
Hive的數據存儲
1、Hive中所有的數據都存儲在 HDFS 中,沒有專門的數據存儲格式(可支持Text,SequenceFile,ParquetFile,ORC格式RCFILE等)
2.只需要在創建表的時候告訴 Hive 數據中的列分隔符和行分隔符,Hive 就可以解析數據。
3.Hive 中包含以下數據模型:DB、Table,External Table,Partition,Bucket。
db:在hdfs中表現為${hive.metastore.warehouse.dir}目錄下一個文件夾
table:在hdfs中表現所屬db目錄下一個文件夾
external table:與table類似,不過其數據存放位置可以在任意指定路徑
partition:在hdfs中表現為table目錄下的子目錄
bucket:在hdfs中表現為同一個表目錄下根據hash散列之后的多個文件
到此,關于“Hive的基本概念”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。