鲁春利的工作笔记,谁说程序员不能有文艺范?
MapReduce提供了许多默认的输出格式,如TextOutputFormat、KeyValueOutputFormat等。MapReduce中输出文件的个数与Reduce的个数一致,默认情况下有一个Reduce,输出只有 香港云主机一个文件,文件名为part-r-00000,文件内容的行数与map输出中不同key的个数一致。如果有两个Reduce,输出的结果就有两个文件,第一个为part-r-00000,第二个为part-r-00001,依次类推。
MapReduce中默认实现输出功能的类是TextOutputFormat,它主要用来将文本数据输出到HDFS上。通过TextFileOutput类分析出具体需要将数据保存到HDFS的什么位置上,是通过FileOutputFormat类的getDefaultWorkFile方法来获取的。实际上对于MapReduce中所有的输出都需要继承OutputFormat,先看一下OutputFormat的类定义。在TextOutputFormat中实现了getRecordWriter,而TextOutputFormat的是FileOutputFormat的子类,而FileOutputFormat是的子类。
任务的类型是通过类org.apache.hadoop.mapreduce.TaskID$CharTaskTypeMaps获取
应用示例:把首字母相同的单词放到一个文件里面输入文件内容:
自定义OutputFormat:
实现Mapper
实现Reducer
实现Driver
调用执行
查看输出结果:
错误记录:1、java.lang.RuntimeException: java.lang.InstantiationException原因:
由于之前还有一个子类,在Driver中是通过子类定义输出,后来感觉子类没有必要,于是去掉了,但是MultipleOutputFormat类定义仍然为abstract MultipleOutputFormat,没有把abstract给注释掉。
2、Error: java.io.IOException: Unable to initialize any output collector原因:Text引用错了:com.sun.jersey.core.impl.provider.entity.XMLJAXBElementProvider.Text
正确的引用:org.apache.hadoop.io.Text
说明:通过第二个错误信息能看到map task的命名规则:
”新基建“主要包含5G基建、特高压、城际高速铁路和城际轨道交通、新能源汽车充电桩、大数据中心、人工智能、工业互联网七大领域。自3月初中央强调加快5G网络、数据中心等新型基础设施建设进度后,工信部、国家发展改革委等部门多次作出具体部署。各地新基建投资开足马力,作…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。