簡體   English   中英

在Apache PIG中按父值過濾包

[英]Filter bag by parent value in Apache PIG

我在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)。

您是否嘗試過:

測試=篩選器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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM