在我的輸入文件中,我有一個列作爲國家。現在,我的任務是將某個國家的記錄放入與該國家名稱相同的單獨文件中。這可能在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. 是否可以從Sphinx文檔生成一個.pot文件?
- 5. 是否可以爲ARM和THUMB生成單獨的.exe文件?
- 6. 是否可以輸出'rake db:migrate'生成的SQL更改腳本?
- 7. 是否可以將xslt文件拆分爲多個文件?
- 8. 是否可以從bjam生成一個.h宏文件?
- 9. MapReduce輸出文件空
- 10. 是否可以從ANTLR生成的Lexer和Parser文件生成語法文件?
- 11. Hadoop映射器可以在輸出中生成多個鍵嗎?
- 12. 是否可以將Greasemonkey用戶腳本分成多個文件?
- 13. wget -o命令輸出生成多個文件,是否有可能只有一個?
- 14. 的MapReduce沒有產生一個輸出
- 15. 是否可以將輸出管道着色爲更多?
- 16. 生成SubSonic DAL時,是否可以在生成的文件名中包含.gen.cs?
- 17. 是否可以從spring-beans.dtd生成的spring-beans.xsd生成java源文件?
- 18. 這個XML是否合法,我可以爲它生成XSS嗎?
- 19. 是否可以爲每個選項卡生成唯一的ID?
- 20. Xcode中的警告:「輸出文件的多個生成命令」
- 21. 從模板生成多個輸出文件
- 22. 的iOS SDK(xcodebuild聯編):生成多個輸出文件
- 23. 使用Hadoop生成多個輸出文件0.20+
- 24. TesseractOCRiOS |警告:輸出文件的多個生成命令
- 25. 生成文件:有3種輸入產生一個輸出
- 26. 是否可以使用JavaScript生成保存文件對話框?
- 27. 是否可以編寫/生成3D打印對象的文件?
- 28. 是否可以通過iManage API生成NRL文件?
- 29. 是否有任何工具可以生成labels.rdf文件?
- 30. 是否可以在5,430字節下生成favicon.ico文件?
你試過 '三通' 克隆輸出流。 – 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