我认为我的问题很简单,但我是Pig的新手,我在文档中看不到明显的答案。我有两个时间序列我希望合并。假设其中一个只是一系列事件X
:
100 A
200 B
300 C
400 D
500 E
600 F
然后另一个指示某些状态发生变化时,将其称为Y
。
50 on
250 off
350 on
450 off
我想使用X
的当前on/off
状态标记第一个时间序列Y
。所以我特别想要:
100 A on
200 B on
300 C off
400 D on
500 E off
600 F off
如果我用另一种语言写这个,我可以做一些像合并排序X
和Y
这样的事情,并通过它,记住最后on/off
状态并标记{ {1}}条目。
Pig中最好的方法是什么?我收到了一些使用X
JOIN
和X
的现有代码然后对其进行过滤,但我认为加入引起的数据通胀是不必要的。
答案 0 :(得分:0)
我认为没有一个非常简单的解决方案。这是一些伪代码:
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