大數據中的文件格式:簡短的教育計劃

大數據中的文件格式:簡短的教育計劃
Remarin 的天氣神

團隊 Mail.ru 雲解決方案 優惠 文章翻譯 來自 Clairvoyant 的工程師 Rahul Bhatia 介紹了大數據中有哪些文件格式、Hadoop 格式最常見的特徵是什麼以及哪種格式更好用。

為什麼需要不同的文件格式?

支援 HDFS 的應用程式(例如 MapReduce 和 Spark)的主要效能瓶頸是搜尋、讀取和寫入資料所需的時間。 如果我們有一個不斷發展的模式而不是固定的模式,或者存在一些儲存限制,那麼管理大型資料集的難度就會使這些問題變得更加複雜。

處理大數據會增加儲存子系統的負載 - Hadoop 冗餘儲存資料以實現容錯。 除了磁碟之外,還載入處理器、網路、輸入/輸出系統等。 隨著資料量的成長,處理和儲存資料的成本也隨之增加。

各種文件格式在 Hadoop的 正是為了解決這些問題而發明的。 選擇適當的文件格式可以帶來一些顯著的好處:

  1. 更快的閱讀時間。
  2. 更快的錄音時間。
  3. 共享文件。
  4. 支持模式演化。
  5. 擴展的壓縮支援。

有些文件格式用於一般用途,有些文件格式用於更特定的用途,還有一些文件格式旨在滿足特定的資料特徵。 所以選擇範圍真的相當大。

Avro 檔案格式

數據序列化 Avro 被廣泛使用 - 它 基於字串,即Hadoop中的一種字串資料儲存格式。 它以 JSON 格式儲存架構,使其易於任何程式讀取和解釋。 數據本身是二進制格式,緊湊且高效。

Avro 的序列化系統是語言中立的。 檔案可以用多種語言處理,目前有 C、C++、C#、Java、Python 和 Ruby。

Avro 的一個關鍵特性是它對隨時間變化(即演化)的資料模式的強大支持。 Avro 瞭解架構變更 - 刪除、新增或變更欄位。

Avro 支援多種資料結構。 例如,您可以建立包含陣列、枚舉類型和子記錄的記錄。

大數據中的文件格式:簡短的教育計劃
此格式非常適合寫入資料湖的著陸(過渡)區域(資料湖,或資料湖 - 除了直接資料來源之外還用於儲存各種類型資料的實例集合)。

因此,這種格式最適合寫入資料湖的著陸區,原因如下:

  1. 來自該區域的資料通常會被完整讀取,以便下游系統進一步處理 - 在這種情況下,基於行的格式更有效率。
  2. 下游系統可以輕鬆地從文件中檢索模式表,無需將模式單獨儲存在外部元儲存中。
  3. 對原始模式的任何更改都很容易處理(模式演變)。

鑲木地板文件格式

Parquet 是 Hadoop 的開源檔案格式,用於存儲 平面柱狀格式的嵌套資料結構.

與傳統的行方式相比,Parquet 在儲存和效能方面更有效率。

這對於從寬(多列)表中讀取特定列的查詢特別有用。 由於採用了檔案格式,因此僅讀取必要的列,因此 I/O 保持在最低限度。

一個小題外話和解釋:為了更好地理解 Hadoop 中的 Parquet 檔案格式,讓我們看看什麼是基於列(即柱狀)格式。 這種格式將每列的相似值儲存在一起。

例如,該記錄包括 ID、姓名和部門欄位。 在這種情況下,所有 ID 列值將儲存在一起,Name 列值也將儲存在一起,依此類推。 該表將如下所示:

ID
姓名
參觀商店

1
emp1
d1

2
emp2
d2

3
emp3
d3

以字串格式儲存資料如下:

1
emp1
d1
2
emp2
d2
3
emp3
d3

在柱狀檔案格式中,相同的資料將像這樣保存:

1
2
3
emp1
emp2
emp3
d1
d2
d3

當您需要從表格中查詢多個列時,列式格式會更有效。 它只會讀取所需的列,因為它們是相鄰的。 透過這種方式,I/O 操作保持在最低限度。

例如,您只需要 NAME 列。 在 字串格式 資料集中的每筆記錄都需要加載,按欄位解析,然後提取NAME資料。 列格式可讓您直接深入名稱列,因為該列的所有值都儲存在一起。 您不必掃描整個錄音。

因此,列式格式提高了查詢效能,因為它需要更少的查找時間來獲取所需的列,並且減少了 I/O 操作的數量,因為只讀取所需的列。

獨特的功能之一 實木複合地板 在這種格式下它可以 使用嵌套結構儲存數據。 這意味著在 Parquet 檔案中,甚至可以單獨讀取嵌套字段,而無需讀取嵌套結構中的所有字段。 Parquet 使用分解和組裝演算法來儲存巢狀結構。

大數據中的文件格式:簡短的教育計劃
要了解 Hadoop 中的 Parquet 檔案格式,您需要了解以下術語:

  1. 字串群組 (行組):將資料邏輯水平劃分為行。 行組由資料集中每列的片段組成。
  2. 柱碎片 (列塊):特定列的片段。 這些列片段位於特定的行組中,並保證在文件中是連續的。
  3. (page):列片段被分成一頁接一頁地寫入的頁面。 這些頁面有一個共同的標題,因此您在閱讀時可以跳過不必要的頁面。

大數據中的文件格式:簡短的教育計劃
這裡的標題只包含神奇的數字 PAR1 (4 個位元組),將檔案標識為 Parquet 檔案。

頁尾內容如下:

  1. 包含每列元資料的起始座標的檔案元資料。 讀取時,必須先讀取文件的元資料以找到所有感興趣的列片段。 然後應按順序讀取列部分。 其他元資料包括格式版本、架構和任何其他鍵值對。
  2. 元資料長度(4 位元組)。
  3. 幻數 PAR1 (4位元組)。

ORC 文件格式

優化行列文件格式 (優化行列, 獸人)提供了一種非常有效的資料儲存方式,旨在克服其他格式的限制。 以完美緊湊的形式儲存數據,讓您跳過不必要的細節 - 無需建立大型、複雜或手動維護的索引。

ORC格式的優點:

  1. 每個任務的輸出都是一個文件,減少了NameNode(名稱節點)的負載。
  2. 支援 Hive 資料類型,包括 DateTime、decimal 和複雜資料類型(struct、list、map 和 union)。
  3. 不同RecordReader進程同時讀取同一個檔案。
  4. 能夠在不掃描標記的情況下分割文件。
  5. 根據檔案頁腳中的信息估計讀取/寫入進程的最大可能堆記憶體分配。
  6. 元資料以 Protocol Buffers 二進位序列化格式存儲,允許新增和刪除欄位。

大數據中的文件格式:簡短的教育計劃
ORC 將字串集合儲存在單一檔案中,並且在集合中,字串資料以列式格式儲存。

ORC 檔案在檔案的頁腳中儲存稱為條帶的行群組和支援資訊。 文件末端的 Postscript 包含壓縮參數和壓縮頁腳的大小。

預設條帶大小為 250 MB。 由於條帶如此之大,從 HDFS 讀取資料的效率更高:在大的連續區塊中。

文件頁腳記錄了文件中的泳道清單、每泳道的行數以及每列的資料類型。 每列的計數、最小值、最大值和總和的結果值也寫在那裡。

片段的頁腳包含流位置的目錄。

掃描表時使用行資料。

索引資料包括每列的最小值和最大值以及每列中行的位置。 ORC 索引僅用於選擇條帶和行組,而不用於回答查詢。

不同文件格式的比較

Avro 與 Parquet 相比

  1. Avro 是一種行存儲格式,而 Parquet 將資料儲存在列中。
  2. Parquet 更適合分析查詢,這意味著讀取操作和查詢資料比寫入更有效率。
  3. Avro 中的寫入操作比 Parquet 中的執行效率更高。
  4. Avro 更成熟地處理電路演進。 Parquet僅支援模式添加,而Avro支援多功能演化,即添加或更改列。
  5. Parquet 非常適合查詢多個清單中的列子集。 Avro 適用於我們查詢所有欄位的 ETL 操作。

ORC 與 Parquet

  1. Parquet 可以更好地儲存巢狀資料。
  2. ORC 比較適合謂詞下推。
  3. ORC 支援 ACID 屬性。
  4. ORC 可以更好地壓縮資料。

關於該主題還可以閱讀什麼:

  1. 雲端大數據分析:公司如何成為資料導向型企業.
  2. 資料庫模式簡明指南.
  3. 我們關於數位轉型的電報頻道.

來源: www.habr.com

添加評論