Hadoop中的文件格式大致上分為面向行和面向列兩類:
面向行:同一行的數據存儲在一起,即連續存儲。SequenceFile,MapFile,Avro Datafile。采用這種方式,如果只需要訪問行的一小部分數據,亦需要將整行讀入內存,推遲序列化一定程度上可以緩解這個問題,但是從磁盤讀取整行數據的開銷卻無法避免。面向行的存儲適合於整行數據需要同時處理的情況。
面向列:整個文件被切割為若干列數據,每一列數據一起存儲。Parquet , RCFile,ORCFile。面向列的格式使得讀取數據時,可以跳過不需要的列,適合於只處於行的一小部分字段的情況。但是這種格式的讀寫需要更多的內存空間,因為需要緩存行在內存中(為了獲取多行中的某一列)。同時不適合流式寫入,因為一旦寫入失敗,當前文件無法恢復,而面向行的數據在寫入失敗時可以重新同步到最后一個同步點,所以Flume采用的是面向行的存儲格式。
- 1、 SequenceFile
- 2、Avro
- 3、RCFile
- 4、ORCFile