2014-02-18 16 views
1

我在Java中使用MapReduce框架,我想創建一個自定義的文件輸入格式。
假設我的文件格式是一樣的東西:
--------------
$ -flag- $
什麼

真的

$ -flag- $

另一
部分
---------------
在這種情況下,每條記錄都被視爲多行數組。
隨後的教程中,我寫了這個:如何在使用Hadoop時自定義FileInputFormat以讀取Java中的多行文件?

public class CustomInputFormat extends FileInputFormat<Text, IdxValues> { 
    public RecordReader<Text, IdxValues> getRecordReader(
      InputSplit input, JobConf job, Reporter report) throws IOException { 

     report.setStatus(input.toString()); 
     return new CustomReader(job, (FileSplit)input); 
    } 
} 

現在我不知道我應該如何實現CustomReader類,閱讀[我真正想要]和[而另一部分]作爲兩個數組分開?

+0

你的旗幟是一個角色或表情嗎? – rVr

+0

@rVr它是一個由常量字符串包圍的URI,例如'$ -C:/ usr/john- $'。對於每個記錄,都有一個唯一的URI。它應該用作分隔符。 –

回答

2

我已經做了這樣的事情。在這裏我有'$$$'作爲分隔符(我把它作爲配置參數傳遞給作業)。您可以在同一個項目上檢查代碼here及其具體實現。我自定義了RecordReader以及InputFormat。

相關問題