2016-06-15 3 views

답변

0

최고() 함수가 당신이 언급 튜플의 최고 특정 번호를 가져 오는 데 사용됩니다 ..

당신은 우리가 지금 (ID, 나이, 이름)

Dataset: 
(1,22,k) 
(2,23,j) 
(3,22,l) 
(4,24,m) 
(5,23,n) 
(6,24,o) 
(7,22,p) 
(8,23,q) 
(9,24,r) 

을 가정 해 봅시다 일부 스키마가 있다고 가정

A =Load .. 
B= Group A by age; 
C = Foreach B { 
top = TOP(2,0,A) 
Generate top; 
} 

출력 :

({(7,22,p),(3,22,l)}) 
({(8,23,q),(5,23,n)}) 
({(9,24,r),(6,24,o)}) 
단순히이 파일을로드

각 연령의 TOP 2 기록이 필요합니다. 그래서 여기

TOP(2,0,A) implies TOP(topN,column,relation) 

그리고

우리는 촬영 각 연령에서 더 높은 (위) ID로 id.So 두 개의 기록을 0 컬럼에 따라 상위 2 기록을 말했다.

더 많은 질문에 친절하게 답변 해주세요. :-) 행복한 학습.

0

가방의 상위 N 개 튜플 만 가져 오려면. TOP()을 사용하십시오.

A = LOAD 'file.txt' USING PigStorage(',') AS (col1:int,col2:int); 
file.txt  
(1001,800) 
(1001,800) 
(1001,800) 
(1002,900) 
(1003,900) 
(1003,900) 
(1004,1800) 
(1005,1800) 

B = GROUP A BY (col1); 

(1001,{(1001,800),(1001,800),(1001,800)}) 
(1002,{(1002,900)}) 
(1003,{(1003,900),(1003,900)}) 
(1004,{(1004,1800)}) 
(1005,{(1005,1800)}) 

top_data = FOREACH B { top = TOP(1, 1, A); GENERATE FLATTEN(top);}; 

TOP() 출력 후, 제 ARG 열은 더 상위 N 즉 1 번째 인수이다. 즉 이고, 세 번째는 관계 이름, 즉 입니다.

(1001,800) 
(1002,900) 
(1003,900) 
(1004,1800) 
(1005,1800) 
관련 문제