分区如何处理从mapper到reducer的数据?

时间:2013-08-05 03:39:10

标签: hadoop-streaming partition

我正在使用 hadoop流式来处理一个巨大的文件。  假设我有一个文件,每行都是一个数字,我想把这个文件分成2个文件,一个包含奇数  数字,其他甚至。

使用hadoop,我可以为这个作业指定2个减速器,因为数字从mapper到  reducer,我认为这个数字是由number % 2确定的减速器,对吗?

但我被告知,不仅仅是number % 2而是 hash(number) % 2 这会产生一个数字  去哪个减速机,是真的吗?

如果是的话,我怎么能做到?我可以指定一个分区或其他什么来使它正确吗?

1 个答案:

答案 0 :(得分:0)

如何在映射器中进行拆分?

例如,每个映射器都

if int(number) % 2 == 0:
  # Output "EVEN", number
else:
  # Output "ODD", number

然后减少两个键:EVEN和ODD,将它们写入适当的文件。