分享

这样设置map,combiner,reduce的输入输出类型为什么不通过?

Hedera 发表于 2015-3-4 21:14:56 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 7 28120
map<Object,Text,Text,IntWritble>
combiner<Text,IntWritble,Text,Text>
reduce<Text,Text,Text,Text>

map的输出作为combiner的输入,
combiner的输出作为reduce的输入
但这样输出的文件夹为空。

如果把上面的IntWritble全都改成Text的话,那么输出的文件夹不会为空。


为什么会出现这样的情况?

已有(7)人评论

跳转到指定楼层
Hedera 发表于 2015-3-4 21:27:08
回复

使用道具 举报

rsgg03 发表于 2015-3-4 22:03:41
Hedera 发表于 2015-3-4 21:27
求大神,求告知

不为空的含义是什么?
combiner其实就是reduce,二者必须一致。
否则就会产生问题。也就是combiner和reduce是同一个函数。


回复

使用道具 举报

desehawk 发表于 2015-3-4 22:09:18
参数需要一致,这是因为楼主没有理解combiner和reduce。
他们两个其实是一个函数。
回复

使用道具 举报

Hedera 发表于 2015-3-4 22:14:24
rsgg03 发表于 2015-3-4 22:03
不为空的含义是什么?
combiner其实就是reduce,二者必须一致。
否则就会产生问题。也就是combiner和re ...

如果将IntWritable改成Text后,我写了一个是mycombiner.class的类,一个是myreduce.class的类。这两个类是不一样的,还是一样可以执行啊
回复

使用道具 举报

Hedera 发表于 2015-3-4 22:14:55
rsgg03 发表于 2015-3-4 22:03
不为空的含义是什么?
combiner其实就是reduce,二者必须一致。
否则就会产生问题。也就是combiner和re ...

如果将IntWritable改成Text后,我写了一个是mycombiner.class的类,一个是myreduce.class的类。这两个类是不一样的,还是一样可以执行啊
回复

使用道具 举报

desehawk 发表于 2015-3-4 22:30:51
本帖最后由 desehawk 于 2015-3-4 22:48 编辑
Hedera 发表于 2015-3-4 22:14
如果将IntWritable改成Text后,我写了一个是mycombiner.class的类,一个是myreduce.class的类。这两个类 ...

参数类型,保持一致即可。
他们完成的功能都是一样的。combiner是本地map的合并
回复

使用道具 举报

星星星星笑 发表于 2015-3-5 11:06:01
combiner有时候是不执行的,一旦本地产生的数据很少,可能不会执行。。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条