您好,登錄后才能下訂單哦!
本篇內容介紹了“Hadoop中的文件格式有哪些”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
Hadoop文件格式初學者指南
幾周前,我寫了一篇有關Hadoop的文章,并談到了它的不同部分。 以及它如何在數據工程中扮演重要角色。 在本文中,我將總結Hadoop中不同的文件格式。 本主題將是一個簡短而快速的主題。 如果您想了解Hadoop的工作原理以及它在數據工程師中的重要作用,請在此處訪問我關于Hadoop的文章,或樂于跳過。
Hadoop中的文件格式大致分為兩類:面向行和面向列:
面向行:在一起存儲的同一行數據是連續存儲:SequenceFile,MapFile,Avro Datafile。 這樣,如果僅需要訪問該行的少量數據,則需要將整個行讀入存儲器。 延遲序列化可以將問題減輕到一定程度,但是無法取消從磁盤讀取整行數據的開銷。 面向行的存儲適用于需要同時處理整行數據的情況。
面向列:整個文件分為幾列數據,每列數據存儲在一起:Parquet,RCFile,ORCFile。 面向列的格式可以在讀取數據時跳過不需要的列,適用于字段中只有一小部分行的情況。 但是這種讀取和寫入格式需要更多的存儲空間,因為高速緩存行需要位于內存中(以獲取多行中的一列)。 同時,它不適合流式傳輸,因為一旦寫入失敗,就無法恢復當前文件,并且在寫入失敗時,面向行的數據可以重新同步到最后一個同步點,因此Flume使用 面向行的存儲格式。
如果仍不清楚行和列的方向,請不用擔心,您可以訪問此鏈接,了解它們之間的區別。
以下是在Hadoop系統上廣泛使用的一些相關文件格式:
序列文件
存儲格式取決于是否壓縮以及使用記錄壓縮還是塊壓縮而有所不同:
不壓縮:根據記錄長度,鍵長,值程度,鍵值和值值順序存儲。 范圍是字節數。 使用指定的序列化執行序列化。
記錄壓縮:僅壓縮值,并將壓縮的編解碼器存儲在標頭中。
塊壓縮:將多個記錄壓縮在一起,以利用記錄之間的相似性并節省空間。 同步標記被添加在塊之前和之后。 該屬性的最小值為io.seqfile.compress.blocksizeset。
地圖文件
MapFile是SequenceFile的變體。 將索引添加到SequenceFile并對其進行排序后,它就是MapFile。 索引存儲為單獨的文件,通常每128條記錄存儲一個索引。 可以將索引加載到內存中以進行快速查找-存儲按Key定義的順序排列的數據的文件。 MapFile記錄必須按順序編寫。 否則,將引發IOException。
MapFile的派生類型:
SetFile:一個特殊的MapFile,用于存儲可寫類型的鍵序列。 密鑰是按順序寫入的。
ArrayFile:鍵是一個整數,表示數組中的位置,值是可寫的。
BloomMapFile:使用動態Bloom過濾器針對MapFile get()方法進行了優化。 過濾器存儲在內存中,并且僅當鍵值存在時,才會調用常規的get()方法來執行讀取操作。
Hadoop系統下面列出的文件包括RCFile,ORCFile和Parquet。 Avro的面向列的版本是Trevni。
RC文件
Hive的Record Columnar File(記錄列文件),這種類型的文件首先將數據按行劃分為行組,然后在行組內部將數據存儲在列中。 其結構如下:
與純面向行和面向列的比較:
ORC文件
ORCFile(優化的記錄列文件)提供了比RCFile更有效的文件格式。 它在內部將數據劃分為默認大小為250M的Stripe。 每個條帶均包含索引,數據和頁腳。 索引存儲每列的最大值和最小值以及列中每一行的位置。
在Hive中,以下命令用于使用ORCFile:
CREATE TABLE ...STORED AAS ORC ALTER TABLE ... SET FILEFORMAT ORC SET hive.default.fileformat=ORC
Parquet
一種通用的基于列的存儲格式,基于Google的Dremel。 特別擅長處理深度嵌套的數據。
對于嵌套結構,Parquet會將其轉換為平面列存儲,該存儲由重復級別和定義級別(R和D)表示,并在讀取數據以重建整個文件時使用元數據來重建記錄。 結構體。 以下是R和D的示例:
AddressBook { contacts: { phoneNumber: "555 987 6543" } contacts: { } } AddressBook { }
“Hadoop中的文件格式有哪些”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。