0

私はApache PIGで次の関係を持っています。

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

そして、私は次のことをしたい:

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

要するに、ts1 よりも高い timestmap を使用して bag ORDERED のすべての要素を保持したいのですが、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 に答える