You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@pig.apache.org by Jose Martinez <jm...@yahoo.com.INVALID> on 2014/06/16 04:52:44 UTC

Re: ClassCastException: org.apache.pig.data.DataByteArray cannot be cast to java.lang.Number

Hello,

I am also getting this error.  But with Integer not Number.

Caused by: java.lang.ClassCastException: org.apache.pig.data.DataByteArray cannot be cast to java.lang.Integer
        at org.apache.pig.builtin.IntAvg$Initial.exec(IntAvg.java:87)

Here is my code.

1   njWeather = LOAD '/data/njWeather.csv' USING PigStorage(',');
2   timeTemp = FOREACH njWeather GENERATE $5 AS ts:chararray, $38 AS temp:int;
3   timeTempt2 = FOREACH timeTemp GENERATE ToDate(ts, 'yyyyMMdd HH:mm') AS ts:DateTime , temp AS temp:int;
4   tempAtMidnight = FILTER timeTempt2 BY GetHour(ts)==0;
5   Y = GROUP tempAtMidnight ALL;

6   Z = FOREACH Y GENERATE AVG(tempAtMidnight.temp);
7   STORE Y INTO '/data/Y.csv';
8   DUMP Z;

Storing Y works fine.  I have verified that every temp value in Y.csv is an integer.  But the DUMP Z throws that aforementioned exception.

I've also done the following for good measure.

9   justTemptAtMidnight = FOREACH tempAtMidnight GENERATE temp AS temp:int;
10   X = FOREACH (GROUP justTemptAtMidnight ALL) GENERATE AVG(justTemptAtMidnight.temp
11   STORE justTemptAtMidnight  INTO '/data/justTemptAtMidnight .csv';
12   DUMP X;

But same result.  I have also verified that  every line in justTemptAtMidnight .csv is "^[0-9]+$"

Any ideas? 

thanks
j