我是Hadoop的新手! 現在我試圖用hadoop 2.2.0來使用MultipleOutputFormat,但它似乎只適用於棄用的'JobConf',後者反過來使用棄用的Mapper和Reducer(org.apache.hadoop.mapred.Reducer)等。任何想法如何通過新的'org.apache.hadoop.mapreduce.Job'實現多個輸出功能?使用org.apache.hadoop.mapreduce.Job支持Hadoop MultipleOutputFormat
2
A
回答
1
由於@JudgeMental指出,你應該使用MultipleOutputs
與新的API(mapreduce
),因爲MultipleOutputFormat
只支持舊的API(mapred
)。 MultipleOutputs
實際上爲您提供更多的功能比MultipleOutputFormat
:
- 隨着
MultipleOutputs
,每路輸出都可以有自己OutputFormat
,而與MultipleOutputFormat
每個輸出具有相同OutputFormat
。 - 與
MultipleOutputFormat
比起MultipleOutputs
,您可以更好地控制命名方案和輸出目錄結構。 - 您可以在同一作業中使用
map
和reduce
函數中的MultipleOutputs
,這是MultipleOutputFormat
無法做到的。 - 您可以通過
MultipleOutputs
爲不同的輸出使用不同的鍵和值類型。
因此,兩者並不相互排斥,即使MultipleOutputs
具有更多功能,但重新命名功能的靈活性較差。
要學習如何使用MultipleOutputs
,您應該看看包含完整示例的this documentation。總之,這裏是你放什麼在驅動程序類:
// 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);
而在你Mapper
或Reducer
你應該只是初始化MultipleOutputs
在setup
法MultipleOutputs mos = new MultipleOutputs(context);
,然後你可以在map
和reduce
使用功能爲mos.write("seq", LongWritable(1), new Text("Bye"), "seq_a")
。不要忘記用mos.close()
在cleanup
方法中關閉它!
+0
非常感謝! – user2926672
相關問題
- 1. MultipleOutputFormat支持與'作業'
- 2. Hadoop的MultipleOutPutFormat並加入查詢
- 3. Hadoop支持php,ruby
- 4. MDX對Hive(Hadoop)的支持
- 5. Hadoop Job API支持StreamInputFormat嗎?
- 6. 「對Hadoop HBase插件的GORM支持」不支持grails 2.1.0
- 7. 爲什麼Relational Database不支持Hadoop?
- 8. Sqoop的哪個版本支持Hadoop 1.0.4?
- 9. Hadoop上的支持向量機
- 10. HBase與Hadoop的集成 - 同步支持
- 11. 支持Amazon EMR上的Hadoop 1.0.1作業
- 12. 發現不支持的鍵類型(8)nn/hadoop-kerberos @ HADOOP-KERBEROS
- 13. 使用支持庫
- 14. 如何開發具有hadoop支持的應用程序
- 15. Hadoop中的Docker應用程序支持YARN
- 16. 使用HATEOAS支持Angular2
- 17. ServiceMix 4.2 - 使用支持庫
- 18. 使用Parse.com的IPv6支持
- 19. 使用scala支持MongoDB
- 20. IllegalStateException - 使用AutocompleteTextView支持LoaderManager
- 21. 使用a4j:支持jsf 1.2
- 22. 使用Android支持庫
- 23. 使用ActionBarSherlock和支持庫
- 24. 使用Realm支持枚舉?
- 25. 如何在Hadoop 0.20中使用MultipleoutputFormai?
- 26. 在使用TableMapReduceUtil和MultipleOutputFormat時在Job和JobConf之間掙扎
- 27. 如何使用javascript支持測試senario並且不支持javascript?
- 28. RxJava:如何在不支持使用onType()時支持Observable?
- 29. 不支持在HTML5中使用框架但不支持iFrame
- 30. 在Matlab中使用支持向量機與支持向量機
改爲使用MultipleOutputs。 –