在 Apache Pig 中合并时间序列



我认为我的问题微不足道,但我是 Pig 的新手,我在文档中看不到明显的答案。我有两个时间序列要合并。假设其中一个只是X的事件流:

100 A
200 B
300 C
400 D
500 E
600 F

然后另一个指示何时发生某些状态更改,称之为 Y .

 50 on
250 off
350 on
450 off

我想用 Y 中的当前on/off状态标记第一个时间序列X。所以具体我想要:

100 A on
200 B on
300 C off
400 D on
500 E off
600 F off

如果我用另一种语言写这篇文章,我可能会做一些事情,比如合并排序XY,然后一次性遍历它,记住最后的on/off状态并标记X条目。

在 Pig 中做到这一点的最佳方法是什么?我收到了一些现有的代码,它使用XY JOIN然后过滤它,但我认为由连接引起的数据膨胀是不必要的。

我认为

没有一个简单的解决方案。下面是一些伪代码:

X1 = Rank X;
Y1 = Rank Y;
XY = JOIN X1 BY BY $0 LEFT OUTER, Y1 BY $0;
SPLIT XY INTO status_known IF status is not null, status_unknown OTHERWISE;
--Y2: Find out last status in Y1 (with Group all, max)
--Y3: Cross status_unknown with Y2
UNION status_known and Y3

相关内容

  • 没有找到相关文章

最新更新