bighnaraj mallick
bighnaraj mallick

Reputation: 31

Could not infer the matching function for org.apache.pig.builtin.SUM as multiple or none of them fit. Please use an explicit cast

I wanted to do the sum of a column which contains long type numbers. I tried many possible ways but still the cast error is not getting resolved.

My pig code:

raw_ds = LOAD '/tmp/bimallik/data/part-r-00098' using PigStorage(',')  AS (
    d1:chararray, d2:chararray, d3:chararray, d4:chararray, d5:chararray,
    d6:chararray, d7:chararray, d8:chararray, d9:chararray );

parsed_ds = FOREACH raw_ds GENERATE d8  as inBytes:long, d9  as outBytes:long;

X = FOREACH parsed_ds GENERATE (long)SUM(parsed_ds.inBytes) AS inBytes;
dump X;

Error snapshot:

2015-11-20 02:16:26,631 [main] ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1045: Could not infer the matching function for org.apache.pig.builtin.SUM as multiple or none of them fit. Please use an explicit cast. Details at logfile: /users/bimallik/pig_1448014584395.log 2015-11-20 02:17:03,629 [main] INFO org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MapReduceLauncher - 50% complet

Upvotes: 1

Views: 8107

Answers (2)

Alex Raj Kaliamoorthy
Alex Raj Kaliamoorthy

Reputation: 2095

In local mode I was getting the same issue (pig -x local).

I have tried all the solutions available on the internet but noting seems to be working for me.

I toggled my PIG from local to the mapreduce mode and tried the solution. It worked.

In mapreduce mode all the solutions seem to be working.

Upvotes: 0

bighnaraj mallick
bighnaraj mallick

Reputation: 31

@ManjunathBallur Thanks for the input. I changed my code as below now

<..same as before ...>
A = GROUP parsed_ds by inBytes;
X = FOREACH A GENERATE SUM(parsed_ds.inBytes) as h;
DUMP X; 

Now A is generating a bag of common inBytes and X is giving sum of each bag's inBytes's summation which is again consisting of multiple rows where as I need one single summation value.

Upvotes: 2

Related Questions