在我的輸入文件中,我有一個列作爲國家。現在,我的任務是將某個國家的記錄放入與該國家名稱相同的單獨文件中。這可能在Map-reduce中做到。 請分享你的想法。是否可以爲map-reduce生成多個輸出文件?
0
A
回答
3
是的,在hadoop中,您可以使用MultipleOutputFormat
來做到這一點,使用它的generateFileNameForKeyValue
方法。
使用您的國家名稱作爲鍵和記錄作爲值,這應該完全按照您的需要工作。
3
如果您使用的是新API,則應該查看MultipleOutputs類。這個班內有一個例子。作業提交
使用模式:
Job job = new Job(); FileInputFormat.setInputPath(job, inDir); FileOutputFormat.setOutputPath(job, outDir); job.setMapperClass(MOMap.class); job.setReducerClass(MOReduce.class); ... // Defines additional single text based output 'text' for the job MultipleOutputs.addNamedOutput(job, "text", TextOutputFormat.class, LongWritable.class, Text.class); // Defines additional sequence-file based output 'sequence' for the job MultipleOutputs.addNamedOutput(job, "seq", SequenceFileOutputFormat.class, LongWritable.class, Text.class); ... job.waitForCompletion(true); ...
用法在減速:
String generateFileName(K k, V v) { return k.toString() + "_" + v.toString(); } public class MOReduce extends Reducer { private MultipleOutputs mos; public void setup(Context context) { ... mos = new MultipleOutputs(context); } public void reduce(WritableComparable key, Iterator values, Context context) throws IOException { ... mos.write("text", , key, new Text("Hello")); mos.write("seq", LongWritable(1), new Text("Bye"), "seq_a"); mos.write("seq", LongWritable(2), key, new Text("Chau"), "seq_b"); mos.write(key, new Text("value"), generateFileName(key, new Text("value"))); ... } public void cleanup(Context) throws IOException { mos.close(); ... } }
+4
小心解釋上面的代碼??每個人都可以訪問股票文檔。人們來這裏解釋。 – 2016-05-09 14:19:16
相關問題
- 1. 從Hadoop中的映射器生成多個輸出文件MapReduce
- 2. 是否可以在MapReduce中的同一個鍵下輸出多個值?
- 3. XslTransform.Transform生成多個輸出文件
- 4. 在Python中,是否可以將生成器(context_diff)輸出寫入文本文件?
- 5. Splittig MapReduce輸出到多個輸出文件
- 6. 是否可以從Sphinx文檔生成一個.pot文件?
- 7. 是否可以爲ARM和THUMB生成單獨的.exe文件?
- 8. 是否可以輸出文件? (注意,不是「到」文件)
- 9. Oracle過程是否可以生成輸出記錄?
- 10. 是否可以輸出'rake db:migrate'生成的SQL更改腳本?
- 11. 以2個XML文件作爲輸入並生成輸出XML文件的XSLT
- 12. 是否有可能確定哪個PHP文件生成一些輸出
- 13. 是否可以將xslt文件拆分爲多個文件?
- 14. 是否可以從bjam生成一個.h宏文件?
- 15. 是否可以從ANTLR生成的Lexer和Parser文件生成語法文件?
- 16. Mapreduce爲大輸入文件拋出OutOfMemoryError
- 17. MapReduce輸出文件空
- 18. Hadoop映射器可以在輸出中生成多個鍵嗎?
- 19. 在Elastic MapReduce上輸入多個文件
- 20. 的Hadoop MapReduce的多個輸入文件
- 21. 是否可以將Greasemonkey用戶腳本分成多個文件?
- 22. 是否可以從Windows RT生成可執行文件?
- 23. 是否可以將map-reduce的輸出指向多個Map文件?
- 24. wget -o命令輸出生成多個文件,是否有可能只有一個?
- 25. 是否可以生成WASM文件而不是bundle.js?
- 26. 是否可以在預生成事件中更改文件的生成操作?
- 27. 生成多個輸出文件的腳本組件
- 28. 的MapReduce沒有產生一個輸出
- 29. 是否可以將輸出管道着色爲更多?
- 30. 是否可以爲生成MIDI的邏輯創建插件?
你試過 '三通' 克隆輸出流。 – Marichyasana 2013-05-08 10:50:03
否@Marichyasana其實我不知道這個,你能詳細說明一下 – 2013-05-08 10:51:31
你使用的是什麼版本的hadoop,並且你在尋找一箇舊的API('mapred')還是新的API('mapreduce')的解決方案? – 2013-05-08 11:00:32