2015-04-25 16 views

回答

0

輸入文件:: 德拉威班加羅爾 薩欽孟買 的Dhoni蘭契 德拉威齋浦爾 的Dhoni奈 施瓦格德里 清輝德里 清輝加爾各答 減速機的輸出::德拉威班加羅爾,齋浦爾的Dhoni蘭契,甘比爾奈德里,加爾各答薩欽孟買Sehwag德里

這可以使用Map Reduce程序來實現。

映射類:播放器名稱將是關鍵,地名將是值。 Reducer Class:當我們迭代關鍵字(玩家名稱)時,我們獲得與它相關的所有值(地名)。我們可以構造具有鍵(玩家名稱)和逗號分隔值(地名)的字符串,並輸出來自減速器的字符串。

+0

公共無效減少(文字鍵/ * SHIV * /,迭代器值/ * [23,56,87,90,778] * /, \t \t \t OutputCollector <文本,IntWritable>輸出,記者R)拋出IOException異常 \t \t \t { \t \t { \t \t \t的String = 「」; \t \t \t while(value。hasNext()) \t \t { \t \t \t \t LongWritable i = value.next(); \t \t \t \t s = s + i +「,」; \t \t} \t s = s.substring(0,s.length() - 1); \t \t \t output.collect(關鍵,新IntWritable(S)); //錯誤 \t \t}} 你可以糾正這個錯誤? –

+0

s = s + i +「,」--->這會給你這樣的字符串23,56,87,90,778。然後,如果我們執行新的Intwritable(23,56,87,90,778),它將拋出一個錯誤,即字符串不能轉換爲有效整數。你能告訴你確切的要求嗎.. – madhu

0

如果您需要將映射器輸出保存爲文件,則只需運行一個映射器即可。這可以通過刪除reducer類或通過設置propery job.setNumReduceTasks(0)來完成。 如果您的要求是打印映射器輸出,您只需執行System.out.println(鍵值)。

如果您的要求是打印還原劑輸入,我的意思是鍵,列出[值]。您可以在reduce方法中執行System.out.println。

打印的所有中間值,你可以打印報表映射類,分區程序類和減速類。

+0

我不想在屏幕上打印。我想通過使用output.collect()將這些數據寫入HDFS輸出文件(part-00000)。 –

+0

輸入文件:: 德拉威班加羅爾 薩欽孟買 的Dhoni蘭契 德拉威齋浦爾 的Dhoni奈 施瓦格德里 清輝德里 清輝加爾各答 我期待:: 德拉威班加羅爾,齋浦爾 的Dhoni蘭契,奈 甘比爾德里,加爾各答 Sachin孟買 Sehwag德里減速機產量。 –