2015-07-12 38 views
0

我正在嘗試編寫MapReduce作業,它可以在Mapper中讀取兩個序列文件。我試過在'main'中讀寫序列文件,但我不知道如何在Mapper中完成。我認爲我並不十分熟悉MapReduce的工作方式。謝謝你的協助。Hadoop MapReduce讀取和寫入序列文件

回答

0

如果一切是正確的,在main()方法,你寫這樣的事情:

FileInputFormat.addInputPath() 
FileOutputFormat.setOutputPath() 

告訴Hadoop的目錄在哪裏可以找到你的兩個輸入文件,並在那裏寫的計算結果。

當作業開始時,Hadoop開始讀取它在輸入目錄中找到的文件,並調用映射器的map()方法傳遞給它的每一行文件(當時一個)作爲參數。 在計算結束時,當reducer發出其數據時,Hadoop會將結果寫入指定輸出目錄中的一個(或多個)文件中。

因此,映射器和reducer不需要知道有關輸入/輸出文件的任何信息。

+0

我需要從hdfs中讀取兩個文件並做一些處理。 Mapper可以將來自兩個不同文件的兩行數據傳遞給map()嗎? – kliangh

+0

如果在輸入目錄中存在兩個文件,Hadoop將讀取第一個文件並將該文件的每一行傳遞給映射器的map()方法;那麼它將讀取第二個文件並將該文件的每一行傳遞給map()方法。你需要兩種文件的不同業務邏輯嗎? –

+0

如果我提供了兩個目錄,映射器將依次傳遞兩個文件的每一行,對嗎? 我該如何讓mapper方法同時傳遞來自兩個不同文件的兩行數據? – kliangh