2017-11-06 3 views
0

나는 마지막 명령을 실행하는 동안이 오류를 제외하고는 돼지합계 : 오류 1045

A = LOAD 's3://input' AS (filed1:chararray, filed2:int, field3:float, field4:float); 
filtered_1 = FILTER A BY field3 >= 10; 
filtered_2 = FILTER filtered_1 BY field4 >= 50; 
grouped = GROUP filtered_2 BY field1; 
B = FOREACH grouped GENERATE group as field1, SUM(A.field3)/SUM(A.field4) AS A_avg; 

를 사용하여이 개 금액의 사업부를 계산하려면 :

ERROR grunt.Grunt: ERROR 1045: <line 5, column 55> Could not infer the matching function for org.apache.pig.builtin.SUM as multiple or none of them fit. Please use an explicit cast. 

을 그리고 그 이유를 찾을 수 없습니다 내 합계를 수행하기 전에 GROUP을 사용하고 SUM 문서를 훑어보고 내가 작성한 것과 다른 점을 알지 못합니다.

답변

1
grouped = GROUP filtered_2 BY field1; 

grouped has no ACCESS to alias A . 

B = FOREACH grouped GENERATE group as field1, SUM(A.field3)/SUM(A.field4) AS A_avg; 

"FOREACH grouped " has no access to alias A but directly to fields (field3, field4) 






filtered_1 = FILTER A BY field3 >= 10; 
filtered_2 = FILTER filtered_1 BY field4 >= 50; 


All you are doing in this statement is an AND operation 

filtered_3 = FILTER A BY field3 >= 10 AND field4 >= 50; 

Now 
grouped = GROUP filtered_3 BY field1; 
B = FOREACH grouped GENERATE group as field1, SUM(filtered_3.field3)/SUM(filtered_3.field4) AS A_avg;