2013-10-18 6 views
0

많은 파일이 여러 하위 디렉토리에 있습니다. 모든 파일은 쉼표로 구분됩니다. 나는 각 파일의 첫 번째 필드에 의해 그룹에 좋아하고 나를여러 파일별로 그룹화

잘못된 필드 투사 오류 코드가 저를주는 총 레코드 수

A = LOAD '/files/*' USING PigStorage(',') as (f1, f2, f3, f4, f5); 
B = GROUP A ALL; 
C = GROUP B BY f1; 
D = FOREACH C GENERATE COUNT(f1) ; 
DUMP D; 

를 실행하는 것입니다. 계획된 필드 [f1]은 schema : group : chararray, A : bag {: 튜플 (f1 : chararray, f2 : bytearray, f3 : bytearray, f4 : bytearray, f5 : bytearray)} 스키마에 없습니다.

답변

0

. f1은 B에 없습니다.

A = LOAD '/files/*' ... 
B = GROUP A BY f1; 
C = FOREACH B GENERATE COUNT(A); 
DUMP C; 

시도해보십시오.

전체 그룹화는 전체 데이터 세트를 계산할 때만 사용됩니다. 조심하지 않으면 모든 데이터가 단일 감축 작업으로 처리되므로 모든 그룹을 매우 신중하게 사용해야합니다.

+0

감사합니다! 그것은 트릭을했다. – Jimmy

0

COUNT 함수는 필드가 아닌 BAG의 이름을 사용합니다. 그것은해야한다 : 당신은 GROUP BY ALL

문제는 당신이 F1으로 그룹 B에 노력하고 있다는 것입니다 수행 할 필요가 없습니다

D = FOREACH C GENERATE COUNT(B) ; 
+0

빠른 답변을 주셔서 감사합니다. 오류 메시지는 3 행 C = ... – Jimmy