2012-02-02 12 views
0

標量只能用於投影我在使用foreach時出現這個錯誤。我該如何解決這個錯誤?我如何在foreach中使用LIMIT?請建議提前一些 感謝..標量只能在投影中使用PIG

編輯(Tichdroma):從評論複製的代碼

A = LOAD 'part-r-00000'; 
G = Group A by ($0,$2); 
Y = foreach G generate FLATTEN(group), FLATTEN($1); 
sorted = order Y by $0 ASC, $1 DESC; 
X = foreach Y { 
    lim = LIMIT sorted 3; 
    generate lim; 
}; 
Dump x; 
+0

想分享產生這個錯誤的代碼段? – Thilo 2012-02-02 06:46:30

+0

肯定是A = LOAD'part-r-00000'; G = A組由($ 0,$ 2)組成; G = A組由($ 0,$ 2)組成; Y = foreach G生成FLATTEN(組),FLATTEN($ 1);生成FLATTEN(組),FLATTEN($ 1); sorted = order Y by $ 0 ASC,$ 1 DESC; X = foreach Y lim = LIMIT sorted 3; 生成lim; }; Dump x; – 2012-02-02 06:51:42

回答

3

LIMIT可在豬0.9在foreach nested_op

如果你希望每個組的前N個元素,你可能想嘗試,反覆每一個和單獨排序,並限制他們:

A = LOAD 'part-r-00000'; 
G = GROUP A by ($0, $2); 
X = FOREACH G { 
    sorted = ORDER A by $0 ASC, $1 DESC; 
    lim = LIMIT sorted 3; 
    GENERATE lim; 
}; 
DUMP X; 

注意TOP可以高效,當你只是有一個可比值的列(在本例中不是這樣)。