日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Apache开源列式存储引擎Parquet和ORC比较

發布時間:2024/1/1 编程问答 73 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Apache开源列式存储引擎Parquet和ORC比较 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

相比傳統的行式存儲引擎,列式存儲引擎具有更高的壓縮比,更少的IO操作而備受青睞(注:列式存儲不是萬能高效的,很多場景下行式存儲仍更加高效),尤其是在數據列(column)數很多,但每次操作僅針對若干列的情景,列式存儲引擎的性價比更高。在互聯網大數據應用場景下,大部分情況下,數據量很大且數據字段數目很多,但每次查詢數據只針對其中的少數幾行,這時候列式存儲是極佳的選擇,目前在開源實現中,最有名的列式存儲引擎是Parquet和ORC,在最近一年內,它們都晉升為Apache頂級項目,可見它們的重要性。本文嘗試比較這兩種存儲引擎。

Apache Parquet

源自于google Dremel系統(可下載論文參閱),Parquet相當于Google Dremel中的數據存儲引擎,而Apache頂級開源項目Drill正是Dremel的開源實現。

Apache Parquet 最初的設計動機是存儲嵌套式數據,比如Protocolbuffer,thrift,json等,將這類數據存儲成列式格式,以方便對其高效壓縮和編碼,且使用更少的IO操作取出需要的數據,這也是Parquet相比于ORC的優勢,它能夠透明地將Protobuf和thrift類型的數據進行列式存儲,在Protobuf和thrift被廣泛使用的今天,與parquet進行集成,是一件非容易和自然的事情。 除了上述優勢外,相比于ORC, Parquet沒有太多其他可圈可點的地方,比如它不支持update操作(數據寫成后不可修改),不支持ACID等。

Apache ORC

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表達方式更容易表示出多級嵌套的數據類型。

Parquet與ORC對比

總結

目前在互聯網領域,列式存儲已經逐步被用于各種產品線中,比如twitter已經將部分數據格式轉換為parquet,所占空間和查詢時間減少了約1/3(來源:https://adtmag.com/articles/20 ... .aspx?)。在Twitter,日志格式使用thrift描述,使用Parquet存儲,下圖是一個典型的數據格式描述,共有87個字段,7層嵌套關系。

?

總結

以上是生活随笔為你收集整理的Apache开源列式存储引擎Parquet和ORC比较的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。