2012-10-31 135 views
1

我遇到了在集羣上運行程序的問題,並決定在函數map和reduce中讀取hdfs文件。如何逐行讀取hdfs文件並刻錄以讀取ArrayList中的行?在Java中讀取一個文件hdfs

+0

使用的TextInputFormat默認的InputSplit是FileInputSplit並代表一個完整的線。你遇到的問題究竟是什麼? – rretzbach

回答

1

只是爲了演示一個代碼片段:

Path path = new Path(filePath); 
FileSystem fs = path.getFileSystem(context.getConfiguration()); // context of mapper or reducer 
FSDataInputStream fdsis = fs.open(path); 
BufferedReader br = new BufferedReader(new InputStreamReader(fdsis)); 
String line = ""; 
ArrayList<String> lines = new ArrayList<String>(); 
while ((line = br.readLine()) != null) { 
    lines.add(line); 
} 
br.close();