8

I have a comma seperated .txt file, I want to DUMP the AVG age of all Males.

records = LOAD 'file:/home/gautamshaw/Documents/PigDemo_CommaSep.txt' USING PigStorage(',') AS (firstname:chararray,lastname:chararray,age:int,sex:chararray);
filter_by_male = FILTER records BY sex == 'M';
grouped = GROUP filter_by_male ALL;
average_male_age = FOREACH grouped GENERATE AVG(records.age);

I am getting an error in the FOREACH line:

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

Please advice.

user182944
  • 7,897
  • 33
  • 108
  • 174

1 Answers1

9

You should not project records relation it should be filter_by_male relation.

Can you change your script like this?

average_male_age = FOREACH grouped GENERATE AVG(filter_by_male.age);
Sivasakthi Jayaraman
  • 4,724
  • 3
  • 17
  • 27
  • 1
    You grouped your data from filter_by_male relation not from records relation. You can type "describe grouped" to see the result. It will clearly tell the relation name that you need to use for any aggregate operations. – Sivasakthi Jayaraman Jan 30 '15 at 02:29