成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

大數(shù)據(jù)的列式存儲(chǔ)格式:Parquet

存儲(chǔ) 存儲(chǔ)軟件
今天介紹一種大數(shù)據(jù)時(shí)代有名的列式存儲(chǔ)文件格式:Parquet,被廣泛用于 Spark、Hadoop 數(shù)據(jù)存儲(chǔ)。Parquet 的中文是鑲木地板,意思是結(jié)構(gòu)緊湊,空間占用率高。注意,Parquet 是一種文件格式!

今天介紹一種大數(shù)據(jù)時(shí)代有名的列式存儲(chǔ)文件格式:Parquet,被廣泛用于 Spark、Hadoop 數(shù)據(jù)存儲(chǔ)。Parquet 的中文是鑲木地板,意思是結(jié)構(gòu)緊湊,空間占用率高。注意,Parquet 是一種文件格式!

背景

2010年 google 發(fā)表了一篇論文《Dremel: Interactive Analysis of Web-Scale Datasets》,介紹了其 Dermel 系統(tǒng)是如何利用列式存儲(chǔ)管理嵌套數(shù)據(jù)的,嵌套數(shù)據(jù)就是層次數(shù)據(jù),如定義一個(gè)班級,班級由同學(xué)組成,同學(xué)的信息有學(xué)號、年齡、身高等。

Parquet 是 Dremel 的開源實(shí)現(xiàn),作為一種列式存儲(chǔ)文件格式,2015年稱為 Apache ***項(xiàng)目,后來被 Spark 項(xiàng)目吸收,作為 Spark 的默認(rèn)數(shù)據(jù)源,在不指定讀取和存儲(chǔ)格式時(shí),默認(rèn)讀寫 Parquet 格式的文件。

今天不介紹嵌套數(shù)據(jù)是如何映射到每一列了,簡單來說就是把不同層級的屬性拍到一級,類似降維打擊。這樣,一個(gè)嵌套數(shù)據(jù)可以看成獨(dú)立的多個(gè)屬性,每一個(gè)屬性就是一列,和表結(jié)構(gòu)差不多。

[[235092]]

寫流程

雖然是按列存儲(chǔ),但數(shù)據(jù)是一行一行來的,那什么時(shí)候?qū)?nèi)存中的數(shù)據(jù)寫文件呢?我們知道文件只能順序?qū)?,假如每收到一行?shù)據(jù)就寫入磁盤,那就是行式存儲(chǔ)了。

一個(gè)解決方案是為每個(gè)列開一個(gè)文件,假如數(shù)據(jù)有 n 個(gè)屬性,就需要 n 個(gè)文件,每次寫數(shù)據(jù)就需要追加到 n 個(gè)文件中。但是對于文件格式來說,用戶肯定希望把復(fù)雜的數(shù)據(jù)存到一個(gè)文件中,而不希望管理一堆小文件(可以想象你做了一個(gè)ppt,每一頁存成了一個(gè)文件),所以一個(gè) Parquet 文件中必須存儲(chǔ)數(shù)據(jù)的所有屬性。

另一個(gè)解決方案是在內(nèi)存中緩存一些數(shù)據(jù),等緩存到一定量后,將各個(gè)列的數(shù)據(jù)放在一起打包,這樣各個(gè)包就可以按一定順序?qū)懙揭粋€(gè)文件中。這就是列式存儲(chǔ)的精髓:按列緩存打包。

文件格式

按照上邊這種方式,Parquet 在每一列內(nèi)也需要分成一個(gè)個(gè)的數(shù)據(jù)包,這個(gè)數(shù)據(jù)包就叫 Page,Page 的分割標(biāo)準(zhǔn)可以按數(shù)據(jù)點(diǎn)數(shù)(如每1000行數(shù)據(jù)打成一個(gè) Page),也可以按空間占用(如每列的數(shù)據(jù)攢到8KB合成一個(gè) Page)。

一個(gè) Page 的數(shù)據(jù)就是一列,類型相同,在存儲(chǔ)到磁盤之前一般都會(huì)進(jìn)行編碼壓縮,為了快速查詢、也為了解壓縮這一個(gè) Page,在寫的時(shí)候先統(tǒng)計(jì)一下***最小值,叫做 PageHeader,存儲(chǔ)在 Page 的開頭,其實(shí)就是 Page 的 元數(shù)據(jù)(metadata)。PageHeader 后邊就是數(shù)據(jù)了,讀取一個(gè) Page 時(shí),可以先通過 PageHeader 進(jìn)行過濾。

Parquet 又把多個(gè) Page 放在一起存儲(chǔ),叫 Column Chunk。于是,每一列都由多個(gè) Column Chunk 組成,并且也有其對應(yīng)的 ColumnChunk Metadata。注意,這只是一個(gè)完整數(shù)據(jù)的一個(gè)屬性,一個(gè)數(shù)據(jù)的多個(gè)屬性要放在多個(gè) Column Chunk 的,這多個(gè) Column Chunk 放在一起就叫做一個(gè) Row Group。

下邊這就是 Parquet 官方介紹:

  1. 4-byte magic number "PAR1" 
  2. <Column 1 Chunk 1 + Column Metadata> 
  3. <Column 2 Chunk 1 + Column Metadata> 
  4. ... 
  5. <Column N Chunk 1 + Column Metadata> 
  6. <Column 1 Chunk 2 + Column Metadata> 
  7. <Column 2 Chunk 2 + Column Metadata> 
  8. ... 
  9. <Column N Chunk 2 + Column Metadata> 
  10. ... 
  11. <Column 1 Chunk M + Column Metadata> 
  12. <Column 2 Chunk M + Column Metadata> 
  13. ... 
  14. <Column N Chunk M + Column Metadata> 
  15. File Metadata 
  16. 4-byte length in bytes of file metadata 
  17. 4-byte magic number "PAR1" 

magic number 就類似水印,***有整個(gè)文件的 Metadata。還是看圖吧,Parquet 的官方文件格式圖是下面這樣的:

左邊是數(shù)據(jù),右邊是 File Metadata。

如果覺得太復(fù)雜了,可以看我畫的簡潔版:

是不是清爽很多!File Metadata 中有對應(yīng)的 Row Group Metadata,里面還有 Column Chunk Metadta,和數(shù)據(jù)的組織形式類似,就不展開畫了。

Parquet 的接口就不介紹了,有興趣的去吧:

https://github.com/apache/parquet-format

總結(jié)

列式存儲(chǔ)文件格式到底有多列,取決于每列在內(nèi)存中緩存的數(shù)據(jù)量,由于同一列的各個(gè) Page 相互獨(dú)立,如果每個(gè) Page 只緩存一個(gè)數(shù)據(jù)點(diǎn),就退化成行式存儲(chǔ)了(比行式存儲(chǔ)還差)。因此,列式存儲(chǔ)有一個(gè)需要注意的就是列不能太多,這是個(gè)大坑。

跟我們之前介紹的文件格式比,Parquet 只是多了幾層而已,只要掌握了文件格式的基本原理,各種文件格式都可以快速上手。

責(zé)任編輯:武曉燕 來源: 數(shù)據(jù)庫漫游指南
相關(guān)推薦

2018-12-26 15:00:56

數(shù)據(jù)庫行式存儲(chǔ)列式存儲(chǔ)

2013-08-08 10:07:43

大數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)化數(shù)據(jù)

2018-03-20 10:37:33

存儲(chǔ)大數(shù)據(jù)管理

2017-07-13 11:13:18

大數(shù)據(jù)數(shù)據(jù)存儲(chǔ)

2022-09-01 23:34:18

大數(shù)據(jù)數(shù)據(jù)分析工具

2021-02-08 08:34:55

存儲(chǔ)列式 OLAP

2012-09-26 10:42:11

大數(shù)據(jù)

2018-07-02 09:32:36

OceanBase列式存儲(chǔ)

2018-09-19 10:18:34

行式存儲(chǔ)列式存儲(chǔ)數(shù)據(jù)庫

2018-03-07 13:21:26

RocksDB數(shù)據(jù)存儲(chǔ)

2017-11-01 14:29:38

2017-03-08 10:29:06

HBase大數(shù)據(jù)存儲(chǔ)

2017-06-23 21:32:16

MySQL大數(shù)據(jù)優(yōu)化

2018-08-24 09:42:05

云存儲(chǔ)存儲(chǔ)大數(shù)據(jù)

2018-04-19 09:10:17

數(shù)據(jù)分析列式存儲(chǔ)

2017-02-23 10:27:59

2020-07-14 10:55:28

大數(shù)據(jù)IT技術(shù)

2024-08-07 15:27:50

2025-02-28 09:05:38

2023-09-06 15:00:35

Pandas存儲(chǔ)格式
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 黑人精品欧美一区二区蜜桃 | 午夜a级理论片915影院 | 国产欧美精品一区二区色综合 | 成人一区二区三区在线观看 | 欧美日韩黄色一级片 | 亚洲成人一区二区 | 午夜影院在线观看 | 亚洲国产精品成人 | 欧洲高清转码区一二区 | 午夜影院在线观看 | 国产精品成人一区二区三区夜夜夜 | 久久久久久久国产精品 | 婷婷精品 | 国产精品久久网 | av在线伊人 | 久草视频在线播放 | 日韩免费av | 欧美久久不卡 | 国产精品久久毛片av大全日韩 | 欧美视频xxx | 日日噜噜噜夜夜爽爽狠狠视频, | 男女在线网站 | 99久久精品国产毛片 | 久久一 | 日本精品视频在线观看 | 欧美视频一区二区三区 | 国产日韩一区二区 | 国内av在线| 亚洲国产成人精品久久久国产成人一区 | 日本三级日产三级国产三级 | 波多野结衣精品 | cao视频 | 国产福利视频 | 日韩视频国产 | 午夜免费网| 日韩资源 | 欧美日韩不卡 | 国产精品视频一二三区 | www.奇米| 亚洲a在线视频 | 亚洲日日操|