hive是基於hadoop的資料倉儲工具,可以將結構化的資料檔案對映為一張資料庫表。hive提供類似sql的hiveql的資料處理功能,hive將hiveql語句轉換成mapreduce程式交給hadoop集群處理。
mapreduce實現複雜查詢邏輯開發難度太大,人員學習成本太高,專案週期要求短,引入hive可以使用hiveql這種類sql語法,提供快速開發的能力,避免寫mapreduce程式,降低學習成本。
使用者介面;cli、hiveserver2、hue
元資料儲存;
直譯器、編譯器、優化器、執行器。
使用者介面:
元資料儲存:
hive 將元資料儲存在資料庫中。hive 中的元資料報括表的名字,修改時間,表型別(內部表、外部表),建立時間,儲存位置,表的字段資訊等。
直譯器:直譯器的作用是將hivesql語句轉換為語法樹(ast)。
編譯器:編譯器是將語法樹編譯為邏輯執行計畫。
優化器:優化器是對邏輯執行計畫進行優化。
執行器:執行器是呼叫底層的執行框架執行邏輯執行計畫。
hive是建立在hadoop系統之上的。hive本身沒有專門的資料儲存格式,所有的資料都儲存在hdfs中。
hive不能為資料建立索引,使用者需要在建立表時指定hive資料中的列分隔符和行分隔符即可解析資料。
hive中包含四種資料模型:table,external table,partition,bucket
table:hive中的表和資料庫中的表在概念上是類似的,每個表在hive中都有乙個對應的儲存目錄。
external table:外部表與table類似,但是external table的資料存放位置可以在任意指定路徑。
partition:分割槽,在hdfs中表現為table目錄下的子目錄。
bucket:桶, 在hdfs中表現為同乙個表目錄下根據hash雜湊之後的多個檔案, 會根據不同的檔案把資料放到不同的檔案中。
hive將hql語句轉換成mapreduce程式,交給mapreduce計算處理,並儲存到hdfs中。
hive實現多分隔符
一 測試外表 create external 外表標識 table tmp.deli tmp 0117 z1 string,z2 string partitioned by pt string comment yyyymm row format serde org.apache.hadoop.hiv...
Hive的列分隔符和行分隔符
在建立hive表時,預設行分隔符 a 列分隔符 n 這兩項也是可以設定的。在實際開發中,一般預設使用預設的分隔符,當然有些場景下也會自定義分隔符。spark hive use test db 建立外部表 create external table test tb user id bigint com...
Sqoop匯入hive分隔符問題
sqoop從oracle匯入資料到hive,示例 plain view plain copy sqoop import connect jdbc oracle thin oracle host port orcl username name password passwd hive import t...