1
내 입력 파일이 내 스크립트 아래돼지 스크립팅
a,t1,1000,100
a,t1,2000,200
a,t1,1000,500
b,t2,1000,200
b,t2,5000,100
입니다 작동합니다. 그것은 합계 오류를 던지고있다. 당신이 그것을
myinput = LOAD 'file' USING PigStorage(',') AS(a1:chararray,a2:chararray,total:int,div:int)
for_disticnt = FOREACH myinput GENERATE a2;
grp_disticnt = GROUP for_distinct ALL;
disticnt_count=FOREACH grp_disticnt GENEARATE COUNT(for_disticnt) as finalcount;
grouped = GROUP myinput BY a1;
result = FOREACH grouped GENEARTE group,SUM(myinput.total/myinput.div)/distinct_count;
를 해결시겠습니까 것은 너무 그룹화의 출력이
((a),{(a,t1,1000,100),(a,t1,2000,200)})
((b),{(b,t2,1000,200),(b,t2,5000,100)})
내가 하나의 그룹에 대한 가방의 각 튜플에 $ (3) $ 2 분할하고자하고 다음의 합을하고 마지막으로 그 SUM을 별개의 $ 1로 나눕니다.
그룹화 된 각 가방에 대한 합계 논리는 아래에 있습니다.
[(1000/100)+((2000/200)]/count(distinct $1 in myinput)
[(1000/200)+(5000/100)]/count(distinct $1 in myinput)
내가 원하는 출력 아래
(a,10)
(b,27)
나는 각 튜플 총과 사업부 분할하고 모든의 합을 찾고자하는 번호 각 튜플의 분할 결과 –
나는 당신이 원하는 출력에 혼란스러워합니다. 나는 [(1000/200) + (5000/100)]/count (myinput에서 별개 $ 1)가'5'를 얻는 방법을 모르겠다. – gobrewers14
어쨌든, 내가 생각하는 바에 대한 나의 대답을 편집했다. 그러나 당신은 두 번째 계산을 위해'5'를 어떻게 얻었는지 여전히 확신 할 수 없습니다. – gobrewers14