网站大量收购独家精品文档,联系QQ:2885784924

Hadoop的MapReduce中多文件输出-北风网.pdf

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Hadoop的MapReduce中多文件输出-北风网

[Hadoop 系列]Hadoop 的 MapReduce 中多文件输出 2010-01-08 11:14 2883 人阅读评论(4) 收藏举报 inkfish 原创,请勿商业性质转载,转载请注明来源(/inkfish )。 Hadoop 默认的输出是TextOutputFormat,输出文件名不可定制。hadoop 0.19.X 中有 一个org.apache.hadoop.mapred.lib.MultipleOutputFormat ,可以输出多份文件且可以自定 义文件名,但是从hadoop 0.20.x 中MultipleOutputFormat 所在包的所有类被标记为“已过 时”,当前如果再使用MultipleOutputFormat,在将来版本的hadoop 中可能无法使用。本篇 文章中,我们自己实现一个简单的MultipleOutputFormat,并修改hadoop 自带的WordCount 示例程序来测试结果。 环境: Ubuntu 8.0.4 Server 32bit Hadoop 0.20.1 JDK 1.6.0_16-b01 Eclipse 3.5 所有代码分为3 个类: 1.LineRecordWriter: RecordWriter 的一个实现,用于把Key, Value转化为一行文本。在Hadoop 中,这 个类作为TextOutputFormat 的一个子类存在,protected 访问权限,因此普通程序无法访问。 这里仅仅是把LineRecordWriter 从TextOutputFormat 抽取出来,作为一个独立的公共类使 用。 view plain 1. package inkfish.hadoop.study; 2. import java.io.DataOutputStream; 3. import java.io.IOException; 4. import java.io.UnsupportedEncodingException; 5. import org.apache.hadoop.io.NullWritable; 6. import org.apache.hadoop.io.Text; 7. import org.apache.hadoop.mapreduce.RecordWriter; 8. import org.apache.hadoop.mapreduce.TaskAttemptContext; 9. import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat; 10. /**摘自{@link TextOutputFormat}中的LineRecordWriter。 */ 11. public class LineRecordWriterK, V extends RecordWriterK, V { 12. private static final String utf8 = UTF-8; 13. private static final byte[] newline; 14. static { 15. try { 16. newline = /n.getBytes(utf8); 17. } catch (UnsupportedEncodingException uee) { 18. throw new IllegalArgumentException(cant find + utf8 + enco ding); 19. } 20. } 21. protected DataOutputStream out; 22. private final byte[] keyValueSeparator; 23. public LineRecordWriter(DataOutputStream out, String keyValueSeparator) { 24. this .out = out; 25. try { 26. this .keyValueSeparator = keyValueSeparator.getBy

文档评论(0)

xxj1658888 + 关注
实名认证
内容提供者

教师资格证持证人

该用户很懒,什么也没介绍

领域认证该用户于2024年04月12日上传了教师资格证

1亿VIP精品文档

相关文档