hive檔案格式

2022-08-14 21:36:13 字數 1278 閱讀 9109

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高。

parquet

apache parquet 最初的設計動機是儲存巢狀式資料,比如protocolbuffer,thrift,json等,將這類資料儲存成列式格式,以方便對其高效壓縮和編碼,且使用更少的io操作取出需要的資料,這也是parquet相比於orc的優勢,它能夠透明地將protobuf和thrift型別的資料進行列式儲存,在protobuf和thrift被廣泛使用的今天,與parquet進行整合,是一件非容易和自然的事情。 除了上述優勢外,相比於orc, parquet沒有太多其他可圈可點的地方,比如它不支援update操作(資料寫成後不可修改),不支援acid等。

orcfile

orc(optimizedrc file)儲存源自於rc(recordcolumnar file)這種儲存格式,rc是一種列式儲存引擎,對schema演化(修改schema需要重新生成資料)支援較差,而orc是對rc改進,但它仍對schema演化支援較差,主要是在壓縮編碼,查詢效能方面做了優化。rc/orc最初是在hive中得到使用,最後發展勢頭不錯,獨立成乙個單獨的專案。hive 1.x版本對事務和update操作的支援,便是基於orc實現的(其他儲存格式暫不支援)。orc發展到今天,已經具備一些非常高階的feature,比如支援update操作,支援acid,支援struct,array複雜型別。你可以使用複雜型別構建乙個類似於parquet的巢狀式資料架構,但當層數非常多時,寫起來非常麻煩和複雜,而parquet提供的schema表達方式更容易表示出多級巢狀的資料型別。

Hive 檔案格式

hive檔案儲存格式包括以下幾類 1 textfile 2 sequencefile 3 rcfile 4 orcfile 0.11以後出現 5 parquet其中textfile為預設格式,建表時不指定預設為這個格式,匯入資料時會直接把資料檔案拷貝到hdfs上不進行處理 sequencefile,...

Hive檔案格式

hive檔案儲存格式包括以下幾類 1 textfile 2 sequencefile 3 rcfile 4 orcfile 0.11以後出現 其中textfile為預設格式,建表時不指定預設為這個格式,匯入資料時會直接把資料檔案拷貝到hdfs上不進行處理 sequencefile,rcfile,or...

Hive檔案格式

hive檔案儲存格式包括以下幾類 1 textfile 2 sequencefile 3 rcfile 4 orcfile 0.11以後出現 其中textfile為預設格式,建表時不指定預設為這個格式,匯入資料時會直接把資料檔案拷貝到hdfs上不進行處理 sequencefile,rcfile,or...