Hadoop按时间顺序分区

时间:2013-09-06 13:43:06

标签: hadoop map streaming reduce

我正在尝试按日期对地图输出进行分区,但是我没有运气。

我的地图输出格式为:

2012-01-01 \ tsome text here

使用KeyFieldBasedPartitioner,我试图按日期对每个地图输出进行分区,因此每年将有365个分区。

以下选项对我不起作用: map.output.key.field.separator = - mapred.text.key.partitioner.options = -k1,3.2 #Each reducer匹配我的密钥中'day'字段的第二个字符,因此01,11,21和31被发送到同一个reducer)。

是否可以分割两个字符的组合?

1 个答案:

答案 0 :(得分:0)

mapred.text.key.partitioner.options = -k1,3.2表示使用第一个键字段(在您的示例中为2012)和第三个字段(\ tsome txet)的一部分作为分区程序。明显。它不是“按日期划分每个地图输出”。 也许您可以尝试以下选项: map.output.key.field.separator = \ t mapred.text.key.partitioner.options = -k1

仅供参考:http://hadoop.apache.org/docs/current/api/org/apache/hadoop/mapred/lib/KeyFieldBasedPartitioner.html