永发信息网

hadoop Reducer文件输出格式

答案:1  悬赏:40  手机版
解决时间 2021-02-06 06:41
hadoop Reducer文件输出格式
最佳答案
map中输出key相同,在reduce阶段会把map中的value做combin

代码 context.write(257,1); 改成 context.write(43,"257:1");
最后输出格式就是43 257:1 262:1 1927:2 1032:1 13:1 14:1 17:1 23:1 6041:1 5403:1 986:1 4126:1 674:1 164:1 134:2 687:2 50:5 51:2 4148:1 8886:1 3130:1 9150:1 2112:1 3905:1 1602:1 865:2 98:2 718:1 466:1 1876:1 345:1 90:1 7027:2 314:1 1889:1 2146:1 357:1 2024:1 5101:1 1646:1 104:2 371:1 2934:17 5829:1 4040:1 2891:1 14:1 1783:1 381:1 2693:1追问这样应该不行的。比如处理这种文件:
257 1
262 1

1927 2
按照你的思路会输出这种形式:
43 257:1
43 262:1
43 1927:2
而我要的结果是:
3 257:1 262:1 1927:2
前面的3是表示一共有3个键值对。能不能设置OutputFormat类里面有个什么函数,或者写个继承类什么的实现一下啊?刚刚学MapReducer,求教,谢谢!追答OutputFormat是个抽象类,TextOutputFormat继承了OutputFormat,默认一行行输出,你想自己实现非一行行输出,重写TextOutputFormat。本身mapreduce的map 结束后,会把数据重新排序,作为reduce阶段的输入,该过程称之为shuffle(shuffle也就使你要的功能!!)也就是把相同key的value 拼接在一起

257 1
262 1
1927 2

key 257:1 262:1 1927:2
原理的东西不想多讨论

你要把键值对个数做为输出格式的key,本身你数据格式就是一行行的,而继承InputFormat的TextInputFormat也是一行行读取的,想拿到所有键值对个数,需要完成整个map过程,所以你想要的那个“3”一遍mapreduce做不到,需两次,除非自己重写TextInputFormat。

没有必要就不要用mapreduce。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
海阳有什么特色饭店
运发麦宝水店地址在哪,我要去那里办事
常 德有什么好玩的地方?
麦宝专卖店地址好找么,我有些事要过去
居民的真正好还是农民的政策好
游泳时不用救生圈,怎样能让身体浮在水面上?
成都肖家河到火车东站坐公交车怎么走,急,谢
烧炉的意思是什么啊?知道的请说下!
坂田凤彩水业桶装水店地址在哪,我要去那里办
【小学生作文童话故事】小学三年级作文童话故
中国联通(辉宏专营店)怎么去啊,我要去那办事
蜡笔小新中有哪些细思恐极的细节
戎烬的意思是什么啊?知道的请说下!
按时今年旧喀什法氨基酸能否技术难道法安家费
清唱剧《长恨歌》是()创作的。A.萧友梅B.王
推荐资讯
一次朋友上网吧上网,发现网吧在用我的身份证
冷风扇不放冰晶盒的话 吹出来的风 不会冰吗?
科斗子的意思是什么啊?知道的请说下!
揭阳市就业服务管理局地址在哪,我要去那里办
常官的意思是什么啊?知道的请说下!
昭苏县乡镇财政管理局我想知道这个在什么地方
之前挂在屋里的衣服有蟑螂爬过,现在出现了疑
迎春发艺地址有知道的么?有点事想过去
帮我看看怀孕B超诊断报告什么意思
【燕拼音】燕麦拼音中燕是读作yàn还是yān
电视剧向幸福出发中的歌曲有哪些叫什么名字
“有以下三种观点”怎么译成英文
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?