ORCFile儲存格式

2021-06-23 02:28:45 字數 1244 閱讀 3140

先介紹下orc的檔案格式,截一張官方的圖:

可以看到每個orc檔案由1個或多個stripe組成,每個stripe250mb大小,這個stripe實際相當於之前的rcfile裡的rowgroup概念,不過大小由4mb->250mb,這樣應該能提公升順序讀的吞吐率。每個stripe裡有三部分組成,分別是index data,row data,stripe footer:

1,index data:乙個輕量級的index,預設是每隔1w行做乙個索引。這裡做的索引應該只是記錄某行的各字段在row data中的offset,據說還包括每個column的max和min值,具體沒細看**。

3,stripe footer:存的是各個stream的型別,長度等資訊。

每個檔案有乙個file footer,這裡面存的是每個stripe的行數,每個column的資料型別資訊等;每個檔案的尾部是乙個postscript,這裡面記錄了整個檔案的壓縮型別以及filefooter的長度資訊等。在讀取檔案時,會seek到檔案尾部讀postscript,從裡面解析到file footer長度,再讀filefooter,從裡面解析到各個stripe資訊,再讀各個stripe,即從後往前讀。

接下來看下orcfile相對於rcfile做了哪些改進,從orc作者的ppt裡截了張圖,分別解釋下各行:

hive type model:rcfile在底層儲存時不儲存型別,都當做byte流來儲存

separtor complex columns:orc將複雜型別拆開儲存

splits found quickly:不很理解

default column group size:不用解釋了

files per a bucket:不很理解

store min,max,count,sum:存了這些便於快速地skip掉乙個stripe

versioned metadata:不很理解

run-length data-coding:整數型別做run-length變長編碼

store strings in dictionary:string型別做字典編碼

store row count:每個stripe會儲存行數

skip compressed blocks:可以直接skip掉壓縮過的block

store internal indexes:儲存了乙個輕量級的index

整個orc看下來,**寫的還是比較清晰明了的,而且我們也進行了測試,壓縮效果比rcfile提公升了不少,有興趣的朋友可以來看下,之後會寫第二篇解析,主要是講orc用到的幾種編碼格式。

hive儲存格式

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

Hive儲存格式

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

hive 儲存格式

hive有textfile,sequencefile,rcfile三種檔案格式。textfile為預設格式,建表時不指定預設為這個格式,匯入資料時會直接把資料檔案拷貝到hdfs上不進行處理。sequencefile,rcfile格式的表不能直接從本地檔案匯入資料,資料要先匯入到textfile格式的...