2013-03-25 54 views
0

我使用TXT作爲輸入的書寫的Hadoop序列文件。 我知道如何寫從文本文件序列文件。如何限制的Hadoop序列文件的大小?

但我想限制輸出序列文件的某些特定的大小,比如256MB。

有什麼內在的方法來做到這一點?

回答

1

AFIAK您需要編寫自己的自定義輸出格式來限制輸出文件大小 - 默認情況下,FileOutputFormats爲每個Reducer創建一個輸出文件。

另一種選擇是按常規創建順序文件,然後使用標識映射器創建第二個作業(僅限地圖),然後修改最小/最大輸入拆分大小,以確保每個映射器僅處理每個256MB的數據。這將意味着輸入文件1GB將由4個映射器處理並創建256MB的輸出文件。你會得到更小的文件,其中輸入文件是300MB(256MB映射器和44MB映射器將運行)。

你正在尋找的屬性包括:

  • mapred.min.split.size
  • mapred.max.split.size

它們都配置爲字節大小,所以他們都設置爲268435456