在map reduce中解决这个问题的最优方法是什么?



输入数据集如下:

colA, colB, colc,时间

1、2、1,2012-12-22 12:23:30

1、2、3,2012-12-22 12:23:40

1、2、2、2012-12-22 12:24:20

2、3、1、2012-12-22 12:25:30

输出为下次时间与当前时间的差值ie。, (time+1 - time)。请查看输出栏以获取更多信息。

colA, colB, colc,时间、输出

1、2、1、2012-12-22 12:23:30,10

1、2、2、2012-12-22 12:23:40 40

1、2、3,2012-12-22 12:24:20,0

2、3、1,2012-12-22 12:25:30,0

非常感谢您的帮助

前两列应该是键。使用TextInputFormat读取输入的文本文件。Mapper应该发出一个文本对象,它将是colA_colB。如。对于数据

1,2,2012-12-22 12:23:30
1,2,2012-12-22 12:23:40
1,2,2012-12-22 12:24:20
2,3,2012-12-22 12:25:30

mapper将得到(key, val):

<some long integer X1>, "1,2,2012-12-22 12:23:30"
<some long integer X2>, "1,2,2012-12-22 12:23:40"
<some long integer X3>, "1,2,2012-12-22 12:24:20"
<some long integer X4>, "2,3,2012-12-22 12:25:30"

"某个长整数"只是输入文件

中该行的文件偏移量。

Mapper应该发出以下类型的(键,值)对Text:

"1_2" , "2012-12-22 12:23:30"
"1_2" , "2012-12-22 12:23:40"
"1_2" , "2012-12-22 12:24:20"
"2_3" , "2012-12-22 12:25:30"

如您所见,前3条记录的键是相同的,并且它们肯定会最终到达相同的reducer。还原器会得到这个:

"1_2" , ["2012-12-22 12:23:30", "2012-12-22 12:23:40", "2012-12-22 12:24:20"]
"2_3" , ["2012-12-22 12:25:30"]

在reducer中,从Text对象中获取String并解析它们以生成Java Date对象。在此之后可以直接得到两个日期之间的差值

相关内容

  • 没有找到相关文章

最新更新