hive 資料儲存各種模式

2021-07-12 06:14:17 字數 1345 閱讀 5966

hive的資料分為表資料和元資料,表資料是hive中**(table)具有的資料;而元資料是用來儲存表的名字,表的列和分割槽及其屬性,表的屬性(是否為外部表等),表的資料所在目錄等。下面分別來介紹。

一、hive的資料儲存

hive是基於hadoop分布式檔案系統的,它的資料儲存在hadoop分布式檔案系統中。hive本身是沒有專門的資料儲存格式,也沒有為資料建立索引,只需要在建立表的時候告訴hive資料中的列分隔符和行分隔符,hive就可以解析資料。所以往hive表裡面匯入資料只是簡單的將資料移動到表所在的目錄中(如果資料是在hdfs上;但如果資料是在本地檔案系統中,那麼是將資料複製到表所在的目錄中)。

hive中主要包含以下幾種資料模型:table(表),external table(外部表),partition(分割槽),bucket(桶)(本部落格會專門寫幾篇博文來介紹分割槽和桶)。

1、表:hive中的表和關係型資料庫中的表在概念上很類似,每個表在hdfs中都有相應的目錄用來儲存表的資料,這個目錄可以通過$/conf/hive-site.xml配置檔案中的hive.metastore.warehouse.dir屬性來配置,這個屬性預設的值是/user/hive/warehouse(這個目錄在hdfs上),我們可以根據實際的情況來修改這個配置。如果我有乙個表wyp,那麼在hdfs中會建立/user/hive/warehouse/wyp目錄(這裡假定hive.metastore.warehouse.dir配置為/user/hive/warehouse);wyp表所有的資料都存放在這個目錄中。這個例外是外部表。

2、外部表:hive中的外部表和表很類似,但是其資料不是放在自己表所屬的目錄中,而是存放到別處,這樣的好處是如果你要刪除這個外部表,該外部表所指向的資料是不會被刪除的,它只會刪除外部表對應的元資料;而如果你要刪除表,該錶對應的所有資料報括元資料都會被刪除。

3、分割槽:在hive中,表的每乙個分割槽對應表下的相應目錄,所有分割槽的資料都是儲存在對應的目錄中。比如wyp表有dt和city兩個分割槽,則對應dt=20131218,city=bj對應表的目錄為/user/hive/warehouse/dt=20131218/city=bj,所有屬於這個分割槽的資料都存放在這個目錄中。

4、桶:對指定的列計算其hash,根據hash值切分資料,目的是為了並行,每乙個桶對應乙個檔案(注意和分割槽的區別)。比如將wyp表id列分散至16個桶中,首先對id列的值計算hash,對應hash值為0和16的資料儲存的hdfs目錄為:/user/hive/warehouse/wyp/part-00000;而hash值為2的資料儲存的hdfs 目錄為:/user/hive/warehouse/wyp/part-00002。

Hive之 資料儲存

首先,hive 沒有專門的資料儲存格式,也沒有為資料建立索引,使用者可以非常自由的組織 hive 中的表,只需要在建立表的時候告訴 hive 資料中的列分隔符和行分隔符,hive 就可以解析資料。其次,hive 中所有的資料都儲存在 hdfs 中,hive 中包含以下資料模型 table,exter...

Hive中的各種儲存格式的區別

hive包含的檔案儲存格式有 textfile sequencefile rcfile orcfile,parquet。預設的檔案格式,行儲存。缺點 儲存空間占用較大,i o效能低 不可對資料進行切割 合併,不能進行並行操作 適用於小型查詢,測試操作等。鍵值對形式儲存的二進位制文字格式,行儲存。優點...

hive 各種表及資料匯入

內部表 預設 create table emp info id bigint,name string,income double row format delimited fields terminated by t 外部表 create external emp info ext id bigin...