教育行業(yè)A股IPO第一股(股票代碼 003032)

全國(guó)咨詢/投訴熱線:400-618-4000

ORC和Parquet存儲(chǔ)的優(yōu)點(diǎn)有哪些?

更新時(shí)間:2021年05月27日17時(shí)33分 來(lái)源: 瀏覽次數(shù):

傳智教育-一樣的教育,不一樣的品質(zhì)

ORC和Parquet都是高性能的存儲(chǔ)方式,這兩種存儲(chǔ)格式總會(huì)帶來(lái)存儲(chǔ)和性能上的提升。

1.Parquet

(1)Parquet支持嵌套的數(shù)據(jù)模型,類似于Protocol Buffers,每一個(gè)數(shù)據(jù)模型的schema包含多個(gè)字段,每一個(gè)字段有三個(gè)屬性:重復(fù)次數(shù)、數(shù)據(jù)類型和字段名,重復(fù)次數(shù)可以是以下三種:required(只出現(xiàn)1次),repeated(出現(xiàn)0次或多次),optional(出現(xiàn)0次或1次)。每一個(gè)字段的數(shù)據(jù)類型可以分成兩種: group(復(fù)雜類型)和primitive(基本類型)。

(2)Parquet中沒(méi)有Map、Array這樣的復(fù)雜數(shù)據(jù)結(jié)構(gòu),但是可以通過(guò)repeated和group組合來(lái)實(shí)現(xiàn)的。

(3)由于Parquet支持的數(shù)據(jù)模型比較松散,可能一條記錄中存在比較深的嵌套關(guān)系,如果為每一條記錄都維護(hù)一個(gè)類似的樹(shù)狀結(jié)可能會(huì)占用較大的存儲(chǔ)空間,因此Dremel論文中提出了一種高效的對(duì)于嵌套數(shù)據(jù)格式的壓縮算法:Striping/Assembly算法。通過(guò)Striping/Assembly算法,parquet可以使用較少的存儲(chǔ)空間表示復(fù)雜的嵌套格式,并且通常Repetition level和Definition level都是較小的整數(shù)值,可以通過(guò)RLE算法對(duì)其進(jìn)行壓縮,進(jìn)一步降低存儲(chǔ)空間。

Parquet文件是以二進(jìn)制方式存儲(chǔ)的,是不可以直接讀取和修改的,Parquet文件是自解析的,文件中包括該文件的數(shù)據(jù)和元數(shù)據(jù)。

2.ORC

(1)ORC文件是自描述的,它的元數(shù)據(jù)使用Protocol Buffers序列化,并且文件中的數(shù)據(jù)盡可能的壓縮以降低存儲(chǔ)空間的消耗;

(2)和Parquet類似,ORC文件也是以二進(jìn)制方式存儲(chǔ)的,所以是不可以直接讀取,ORC文件也是自解析的,它包含許多的元數(shù)據(jù),這些元數(shù)據(jù)都是同構(gòu)ProtoBuffer進(jìn)行序列化的;

1622107663499_ORC和Parquet1.jpg

(3)ORC會(huì)盡可能合并多個(gè)離散的區(qū)間盡可能的減少I/O次數(shù);

(4)ORC中使用了更加精確的索引信息,使得在讀取數(shù)據(jù)時(shí)可以指定從任意一行開(kāi)始讀取,更細(xì)粒度的統(tǒng)計(jì)信息使得讀取ORC文件跳過(guò)整個(gè)row group,ORC默認(rèn)會(huì)對(duì)任何一塊數(shù)據(jù)和索引信息使用ZLIB壓縮,因此ORC文件占用的存儲(chǔ)空間也更??;

(5)在新版本的ORC中也加入了對(duì)Bloom Filter的支持,它可以進(jìn)一步提升謂詞下推的效率,在Hive 1.2.0版本以后也加入了對(duì)此的支持。




猜你喜歡:

大數(shù)據(jù)之Hive視頻教程[大數(shù)據(jù)培訓(xùn)教程

怎樣安裝Hive?本地和遠(yuǎn)程操作安裝區(qū)別在哪里

Redis、傳統(tǒng)數(shù)據(jù)庫(kù)、HBase以及Hive的區(qū)別

Spark SQL如何實(shí)現(xiàn)Hive數(shù)據(jù)倉(cāng)庫(kù)的操作?

傳智教育Python+大數(shù)據(jù)開(kāi)發(fā)培訓(xùn)

0 分享到:
和我們?cè)诰€交談!