hive 資料儲存格式詳解

2021-09-20 17:00:08 字數 1434 閱讀 5206

hive的三種檔案格式:

textfile、sequencefile、rcfile

中,textfile和sequencefile的儲存格式都是基於行儲存的,rcfile是基於行列混合的思想,先按行把資料劃分成n個row group,在row group中對每個列分別進行儲存。另:hive能支援自定義格式,詳情見:hive檔案儲存格式

基於hdfs的行儲存具備快速資料載入和動態負載的高適應能力,因為行儲存保證了相同記錄的所有域都在同乙個集群節點。但是它不太滿足快速的查詢響應時間的要求,因為當查詢僅僅針對所有列中的 少數幾列時,它就不能跳過不需要的列,直接定位到所需列;同時在儲存空間利用上,它也存在一些瓶頸,由於資料表中包含不同型別,不同資料值的列,行儲存不 易獲得乙個較高的壓縮比。

rcfile是基於sequencefile實現的列儲存格式。除了滿足快速資料載入和動態負載高適應的需求外,也解決了sequencefile的一些瓶頸;

做個簡單介紹

textfile:

sequencefile:

sequencefile是hadoop api 提供的一種二進位制檔案,它將資料以的形式序列化到檔案中。這種二進位制檔案內部使用hadoop 的標準的writable 介面實現序列化和反序列化。它與hadoop api中的mapfile 是互相相容的。hive 中的sequencefile 繼承自hadoop api 的sequencefile,不過它的key為空,使用value 存放實際的值, 這樣是為了避免mr 在執行map 階段的排序過程。

rcfile

rcfile是hive推出的一種專門面向列的資料格式。 它遵循「先按列劃分,再垂直劃分」的設計理念。當查詢過程中,針對它並不關心的列時,它會在io上跳過這些列。需要說明的是,rcfile在map階段從 遠端拷貝仍然是拷貝整個資料塊,並且拷貝到本地目錄後rcfile並不是真正直接跳過不需要的列,並跳到需要讀取的列, 而是通過掃瞄每乙個row group的頭部定義來實現的,但是在整個hdfs block 級別的頭部並沒有定義每個列從哪個row group起始到哪個row group結束。所以在讀取所有列的情況下,rcfile的效能反而沒有sequencefile高。

基於hadoop系統行儲存結構的優點在於快速資料載入和動態負載的高適應能力,這是因為行儲存保證了相同記錄的所有域都在同乙個集群節點,即同乙個 hdfs塊。不過,行儲存的缺點也是顯而易見的,例如它不能支援快速查詢處理,因為當查詢僅僅針對多列表中的少數幾列時,它不能跳過不必要的列讀取;此 外,由於混合著不同資料值的列,行儲存不易獲得乙個極高的壓縮比,即空間利用率不易大幅提高。

結論: 表現

反應在大小資料集上,rcfile的查詢效率高於sequencefile,

在特定字段資料讀取時,rcfile的查詢效率依然優於sequencefile;

原文出自 csdn部落格  

Hive的資料儲存格式

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

hive儲存格式

textfile 預設格式,行儲存,匯入資料時直接把資料檔案拷貝到hdfs的hive表目錄 hive location 資料檔案可先經過gzip等壓縮,再導hive表 系統自動檢查,執行查詢時自動解壓 但使用這種方式,hive不會對資料進行切分,從而無法對資料進行並行操作.優點 資料載入快 load...

Hive儲存格式

hive的四種儲存格式 textfile sequencefile rcfile parquet 列式儲存和行式儲存的比較 優點缺點 行式儲存 一行資料是一條記錄,放在同乙個block塊中 只查詢幾個列時,也會讀取整行的資料,當資料量大時,影響效能 方便進行insert update操作 不同型別的...