上传数据文件并执行程序:
hdfs dfs -put /testhadoop/subject_score.txt /user/dftest hadoop jar NewDaily3.jar test.ScoreSorting /user/dftest/subject_score.txt /user/dftest/SortScore8 //经过8次才调好的。经过不断地调试,但是总会出现输入类型不匹配的问题,最终,找到在map函数重写的时候,因为值类型错了,应该是Text类型,写成了IntWritable类型,但是报错总是报是因为Text 和 LongWritable问题,所以有点迷。
最后问题解决:
实训2.对两个文件中的数据进行合并和去重
(1)需求说明:
有两个样例文件:XX与YY。要求合并两个文件中的数据,并对合并后的数据进行去重,将结果输出到文件ZZ。
(2)实现思路与步骤:
①利用MapReduce中Reducer类会合并相同键值对的特性,对目标数据进行去重。
②在HDFS创建目录XXYY,将样例文件XX与YY上传到此目录。MapReduce程序读取此目录下的文件。
③在Mapper类中,map函数读取两个文件数据,直接将读取的数据作为键,将值设置为1,最后输出格式为<Text,IntWritable>。
④在Reducer中,键保持不变,将对应的值取为空,输出类型为<Text,NullWritable>。
(3)实现及输出结果:
略
7.小练习在MapReduce程序中,Reducer类中包括的函数有:B
A. startup、reduce、end B. setup、reduce、cleanup
C. start、run、reduce、end D. startup、run、end
下一章将对MapReduce编程进行更深一步的剖析 ^_^ 。