我的數據是用Parquet文件(平均爲< 1mb)編寫的相對較小的Avro記錄的形式。實木複合地板分區和HDFS文件大小
到目前爲止,我用我的本地文件系統來做一些Spark測試。
我使用目錄分層結構對數據進行分區。
我不知道是不是更好地「建立」分配到Avro記錄和積累更大的文件......然而我想象分區的Parquet文件將「映射」到HDFS分區文件中。
哪種方法最好?
編輯(澄清基於評論):
「建立分區到的Avro記錄」:想象我的目錄結構是P1 = /P2 = /file.avro並且Avro公司記錄包含字段F1和F2。我可以將所有這些保存在包含字段P1,P2,F1和F2的單個Avro文件中。即沒有需要與目錄的分區結構,因爲它全部在Avro記錄中存在
關於Parquet分區和HDFS分區:HDFS會在不同的機器上拆分一個大的Parquet文件,這將對應於不同的Parquet分區? (我不知道這是否澄清我的問題 - 如果不是這意味着我真的不明白)
我完全不明白你在問什麼(你是指「在Avro記錄上建立分區」和「分區Parquet文件將映射到HDFS分區文件「),但我會嘗試回答。一般來說,從我的觀點來看,處理大文件總是更好(我通常使用每個文件100M-1G的大小)。分區時也應該避免使用少量數據創建文件夾。如果你想創建更大的parquet文件,使用coalesce()。最後當從HDFS實驗室讀取分區時會匹配輸入文件,所以如果你問的是那麼是的。 –
@TalJoffe謝謝你的回答,我會考慮一下。我澄清了我的問題,是更好的?我不知道'coalesce()',那可能是我應該看的地方。 –
o.k.大。我看到了你的編輯,所以我給出了一個答案,試試和幫助。我知道這是否回答了你的問題 –