2012-02-02 1 views
0

스칼라는 프로젝션에만 사용할 수 있습니다. foreach를 사용하는 동안이 오류가 발생합니다. 어떻게이 오류를 해결할 수 있습니까? foreach 내에서 LIMIT을 어떻게 사용할 수 있습니까?스칼라는 PIG에서 투영과 함께 사용할 수 있습니다

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

+0

물론 A = LOAD 'part-r-00000'; G = 그룹 A by ($ 0, $ 2); Y = foreach G는 FLATTEN (그룹), FLATTEN ($ 1)을 생성합니다. 정렬 = $ 0에 의한 순서 Y ASC, $ 1 DESC; X = foreach Y { lim = LIMIT는 3을 정렬했습니다. lim 생성; }; 덤프 x; –

답변

3

LIMIT가 FOREACH nested_op에 돼지 0.9에서 사용할 코멘트에서 복사 코드 : 사전에 일부 덕분에 ..

편집 (Tichdroma)을 제안 해주십시오. 당신은 단지이있을 때

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하는 것이 효율적이 될 수 : 각 그룹의 상위 N 요소를 원하는 경우

, 각 하나를 반복하고 개별적으로 정렬을 제한하려고 할 수 있습니다 비교할만한 값의 열 (이 경우가 아님).