0

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

使用 hadoop,我可能会为这项工作指定 2 个 reducer,因为当数字从 mapper 转到 reducer 时,我认为数字转到哪个 reducer 由 决定number % 2,对吧?

但是有人告诉我,这不仅仅是简单的number % 2,而是hash(number) % 2使数字转到哪个减速器,这是真的吗?

如果是这样,我怎么能做到?我可以指定一个分区器或其他东西来使它正确吗?

4

1 回答 1

0

在映射器中进行拆分怎么样?

例如,每个映射器都会

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

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

于 2013-08-05T03:49:11.303 回答