ApachePig中的mapreduce合并时间序列

vktxenjb  于 2021-06-25  发布在  Pig
关注(0)|答案(1)|浏览(217)

我认为我的问题是微不足道的,但我是新的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 状态和标记 X 条目。
在Pig身上最好的方法是什么?我已经收到一些使用 JOINX 以及 Y 然后过滤它,但我认为连接导致的数据膨胀是不必要的。

soat7uwm

soat7uwm1#

我认为没有一个很容易的解决办法。下面是一些伪代码:

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

相关问题