2013-01-22 18 views
0

我怎樣才能實現豬下,一個foreach內:Apache的豬:僅在參數是適用LIMIT> 0

REL = foreach RELS { 
if (cnt == 0) 
limited_result = NULL/Empty; 
else 
limited_result = LIMIT results cnt ; 

generate limited_result.some_field; 
} 

我不能使用LIMIT,因爲它驗證了「碳納米管」比我的大0; 我試過使用SPLIT,但顯然它不支持foreach

+0

什麼是你的數據的架構? –

+0

在這裏發帖有點複雜,在這種情況下是否相關? –

回答

2

FILTER怎麼樣FOREACH

REL = foreach (filter RELS by cnt > 0) { 
limited_result = LIMIT results cnt ; 
generate limited_result.some_field; 
} 

如果你還需要記錄,其中cnt是0,你可以SPLIT先產生一個空包時cnt是0:

split RELS into ZERO if cnt == 0, NONZERO if cnt > 0; 

NZ_LIM = foreach NONZERO { 
result = LIMIT results cnt ; 
generate limited_result.some_field; 
} 
Z_LIM = foreach ZERO generate {} as some_field; 

REL = union NZ_LIM, Z_LIM; 
+0

有趣,會檢查出來。順便說一句,我不知道foreach可以處理這樣的語法。無論如何,我正在做一些更復雜的事情,但謝謝你的建議。 –

+0

我正在碰到一個奇怪的PIG錯誤:'引起:org.apache.pig.backend.executionengine.ExecException:錯誤0:標量在輸出中有多個行。 ... at org.apache.pig.impl.builtin.ReadScalars.exec(ReadScalars.java:111) ... \t at org.apache.pig.backend.hadoop.executionengine.physicalLayer.relationalOperators.POLimit.getNext( POLIMIT.java:95)'問題是我無法真正看到豬在錯誤日誌中顯示的第一行和第二行之間的關係。 –

+0

很難說,不知道你的數據是什麼樣的。但是這可能會使您指向正確的方向:https://issues.apache.org/jira/browse/PIG-2134。 –