0

我在 Apache PIG 中有以下关系。

TSERIES: {ORDERED: {(timestamp: long,contentHost: chararray)},ts1: long}

我想做以下事情:

F = foreach TSERIES {
    ts = filter ORDERED by timestamp > TSERIES.ts1;
    generate ts;
}

简而言之,我想保持 bag ORDERED 的所有元素的时间图高于 ts1,但 pig 不允许,特别是这部分ts = filter ORDERED by timestamp > TSERIES.ts1;

这可能吗?我正在使用版本0.9.2-cdh4.0.1(cloudera)。

4

2 回答 2

0

我不确定是否有办法在没有 UDF 的情况下做到这一点......似乎应该有,但我也想不通。无论如何,您可以直接编写一个 UDF 来执行此操作:遍历袋子,过滤掉一些,然后返回一个袋子。或者,您可以编写一个 UDF 来生成 UUID,然后将包展平并重新分组 - 像这样平滑:

a = foreach TSERIES generate ORDERED, ts1, myudfs.GenerateUUID() as id;
b = foreach a generate FLATTEN(ORDERED) as ts, ts1, id;
c = filter b by ts.timestamp > ts1;
d = group c by id;
于 2012-10-03T23:42:09.400 回答
0

你试过了吗:

测试 = 过滤 tseries By (ordered.timestamp > ts1);

于 2012-10-03T21:21:48.820 回答