[英]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.