在 Apache PIG 中按父值过滤袋



我在Apache PIG中有以下关系。

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

我想做以下几点:

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

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

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

你试过吗:

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

我不确定是否有办法在没有 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;

相关内容

  • 没有找到相关文章

最新更新