0

我在 Pig 脚本中有两个关系(我们称之为 A 和 B)。A 和 B 的每个元组都有两个字段,每个元组包含一个时间戳(例如 tsa 和 tsb)和另一个值(a 代表 A,b 代表 B)。每个关系的顺序使得时间戳增加。对于关系 A,两个连续元组的时间戳之间的差异是 5 秒。对于关系 B,这种差异是未知的,可以是 1 秒也可以是 30 分钟(随机事件)。

这是关系 A 的示例(值“a”在 100 和 500 之间):

(1376092800, 112) 
(1376092805, 200)
(1376092810, 323)
(1376092815, 365)
(1376092820, 500)
(1376092825, 122)
(1376092830, 222)
(1376092835, 456)
(1376092840, 100)
(1376092845, 277)

这是 B 关系的示例(值“b”在 1000 和 4000 之间):

(1376092800, 3120) 
(1376092822, 1200)
(1376092827, 4000)
(1376092830, 1325)
(1376092870, 1700)
(1376093000, 1000)
(1376094532, 2233)
(1376095641, 2460)
(1376095646, 1378)

对于 B 关系的每个元组,我想将每个 A 元组与相同的时间戳或上一个(但低于下一个 B 元组)匹配。与前面的例子一样。我想得到:

(1376092800, 3120) -> (1376092800, 3120, 112, 200, 323, 365, 500) 
(1376092822, 1200) -> (1376092822, 1200, 122)
(1376092827, 4000) -> (1376092827, 4000)
(1376092830, 1325) -> (1376092830, 1325, 222, 456, 100, 277)
(1376092870, 1700) -> ...

任何想法?

谢谢你。

4

1 回答 1

1

您可以对这两个关系进行交叉,然后通过 A.timestamp >= B.timestamp 过滤结果。然后按 A.timestamp 分组。

我认为这会让你得到你想要的结果。

于 2013-09-10T17:32:13.203 回答