學習慕課網《走近大資料之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 ...