Hive簡單介紹

2021-07-06 03:30:35 字數 2205 閱讀 6831

學習慕課網《走近大資料之hive入門》教程的筆記。

簡單介紹了hive的安裝,使用和基礎知識。

hive是基於hadoop之上的資料倉儲(也是一種資料庫)

資料倉儲一般不更新,一直增大。

資料倉儲的結構和建立過程:

oltp:聯機事務處理,例:銀行轉賬。

olap:聯機分析處理,例:商品推薦系統。

資料倉儲的資料模型:1星型模型—-(發展出)–> 2雪花模型。

星型模型

是個搭建資料的基礎模型,資料倉儲是面向主題的資料庫。最後構建出的模型就類似乙個星星。在中間的就是其中的主題,外圍的資訊和它相關。

雪花模型

基於星型模型發展來的,以星型的各個頂點為不同的主題,進而擴充套件。

hive是建立在hadoop hdfs上的資料倉儲基礎架構。可以使用etl處理資料。

hive的元資料:hive將元資料存在資料庫中,如:mysql,derby(預設資料庫)等。hive中的元資料報括表的名字,表的列和分割槽及其屬性,表的屬性,表的資料所在的目錄等。

hql是在hive中執行的。

直譯器,編譯器,優化器完成hql查詢語句從詞法分析,語法分析,編譯,優化以及查詢計畫(plan)的生成。生成的查詢計畫儲存在hdfs中,並在隨後mapreduce呼叫執行。

安裝模式:

本地模式:使用其他的資料庫,資料庫和hadoop在同一臺物理機器上。如mysql資料庫。

hive的啟動方式:

cli:

直接輸入hive可以進入命令列模式。

常用的cli命令:

這種方式只能進行查詢操作。

hive遠端服務啟動方式:

埠號:10000

啟動方式:#hive –service hiveservice &

基本資料型別:

可以在hive wiki裡檢視詳細的內容。

varchar(20)表示最長為20, char(20)表示字串如果不是20,也按照20個字元存。

複雜資料型別:

時間型別:

基於hdfs。

沒有專門的資料儲存格式。可以使用txt或者cvs等等。預設使用tab作為分割符。

儲存結構主要包括:資料庫、檔案、表、檢視

可以直接載入文字檔案,如txt等。

建立表時,可以指定hive資料的列分割符和行分割符。

表分類

table 內部表

partition 分割槽表

external table 外部表

bucket table 桶表

檢視:類似於表。

內部表

和資料庫中的table類似。

每個table在hive中都有乙個對應的目錄儲存結構。

所有的table的資料(不包括external table)都儲存在這個目錄下。

刪除表時,元資料和資料都會被刪除。

建立表時,可以指定位置location,或者指定分割符如row format。

分割槽表(partition)

partition對應於資料庫的partition列的密集索引。

在hive中,表中的乙個partition對應於表下的乙個目錄,所有的partition資料都儲存在對應的目錄下。

在建立分割槽表時指定分割槽的條件,就是把資料庫的資料按照什麼原則來進行分類(放在不同的資料夾的檔案裡)。

外部表(external table)

指向已經在hdfs存在的資料,可以建立partition。

和內部表在元資料組織上相同,實際資料的儲存有較大的差異。

外部表只是乙個過程,建立表和載入資料同時完成。只是與外部資料建立乙個連線,類似於快捷方式。

桶表:

是對資料進行雜湊取值,然後放到不同檔案中儲存。

可以提高查詢速度。

檢視:

是一中虛表,是乙個邏輯概念,可以跨越多張表。

檢視是建立在已有表的基礎上,它所依賴的表稱為基表。

檢視可以簡化查詢操作。

Hive基礎介紹

hive是基於hadoop的乙個資料倉儲工具,可以將結構化的資料檔案對映為一張資料庫表,並提供類sql查詢功能。其本質是將sql轉換為mapreduce的任務進行運算,底層由hdfs來提供資料的儲存,通常進行一次寫多次讀操作。優點 介面採用類sql語法,簡單易上手 避免寫mapreduce,減少開發...

Hive 介紹 概念

hive是基於hadoop的乙個資料倉儲工具,可以將結構化的資料檔案對映為一張資料庫表,並提供類sql查詢功能 hql 其本質是將sql轉換為mapreduce的任務進行運算,底層由hdfs來提供資料的儲存,hive可以理解為乙個將sql轉換為mapreduce的任務的工具。每次的執行開銷較大,任務...

hive 資料傾斜介紹

hive在跑資料時經常會出現資料傾斜的情況,使的作業經常reduce完成在99 後一直卡住,最後的 花了幾個小時都沒跑完,這種情況就很可能是資料傾斜的原因,解決方法要根據具體情況來選擇具體的方案 這種情況可以對異常值賦乙個隨機值來分散key 如 selectuserid name fromuser ...