在Apache Pig中合并时间序列

时间:2015-03-11 08:01:57

标签: mapreduce apache-pig time-series

我认为我的问题很简单,但我是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

如果我用另一种语言写这个,我可以做一些像合并排序XY这样的事情,并通过它,记住最后on/off状态并标记{ {1}}条目。

Pig中最好的方法是什么?我收到了一些使用X JOINX的现有代码然后对其进行过滤,但我认为加入引起的数据通胀是不必要的。

1 个答案:

答案 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