Do we want the Max function to be able to handle nulls? Seems fairly natural
for it to be able to.

2011/6/16 Daniel Dai <jiany...@yahoo-inc.com>

> Jonathan is right. math.MAX does not handle null input. Check for null
> before feeding into MAX is necessary.
>
> Daniel
>
>
> On 06/16/2011 06:45 AM, Jonathan Coveney wrote:
>
>> Can you check if your rank2 or rank3 values are ever null? If they are,
>> there are some ad hoc fixes which you can do until this is fixed (and it
>> is
>> easy to fix, just a question of deciding what the desired handling of null
>> values should be). I would just do something like...
>>
>> A = LOAD 'FF23_Filtered.txt' AS (appID, rank2, rank3);
>> B = FILTER A BY rank2 is null AND rank3 is null;
>> C = FOREACH A GENERATE appID, ( rank2 is null ? rank3 : rank2) as rank2, (
>> rank3 is null ? rank2 : rank3 ) as rank3;
>>
>> Obvoiusly you could tweak that for whatever you want to happen if a value
>> is
>> null.
>>
>> 2011/6/16 Jonathan Coveney<jcove...@gmail.com>
>>
>>  Hm, just to make sure, I ran this against trunk (to see if it's just a
>>> 0.7.0 thing or not).
>>>
>>> A = LOAD 'test.txt'; --this is just a blank one line file
>>> B = FOREACH A GENERATE
>>> org.apache.pig.piggybank.**evaluation.math.MAX(1,null);
>>>
>>> I also tested fedding it files from test.txt etc. It fails when there is
>>> a
>>> null value. The cast does not.
>>>
>>> 2011/6/16 Lakshminarayana 
>>> Motamarri<narayana.gupta123@**gmail.com<narayana.gupta...@gmail.com>
>>> >
>>>
>>>  Hi all,
>>>>
>>>> *I am receiving the following exception:*
>>>> org.apache.pig.backend.**executionengine.ExecException: ERROR 2078:
>>>> Caught
>>>> error from UDF: org.apache.pig.piggybank.**evaluation.math.DoubleMax
>>>> [Caught
>>>> exception processing input row  [null]]
>>>>    at
>>>>
>>>> org.apache.pig.backend.hadoop.**executionengine.physicalLayer.**
>>>> expressionOperators.**POUserFunc.getNext(POUserFunc.**java:229)
>>>>    at
>>>>
>>>> org.apache.pig.backend.hadoop.**executionengine.physicalLayer.**
>>>> expressionOperators.**POUserFunc.getNext(POUserFunc.**java:263)
>>>>    at
>>>>
>>>> org.apache.pig.backend.hadoop.**executionengine.physicalLayer.**
>>>> relationalOperators.POForEach.**processPlan(POForEach.java:**269)
>>>>    at
>>>>
>>>> org.apache.pig.backend.hadoop.**executionengine.physicalLayer.**
>>>> relationalOperators.POForEach.**getNext(POForEach.java:204)
>>>>    at
>>>>
>>>> org.apache.pig.backend.hadoop.**executionengine.**
>>>> mapReduceLayer.PigMapBase.**runPipeline(PigMapBase.java:**249)
>>>>    at
>>>>
>>>> org.apache.pig.backend.hadoop.**executionengine.**
>>>> mapReduceLayer.PigMapBase.map(**PigMapBase.java:240)
>>>>    at
>>>>
>>>> org.apache.pig.backend.hadoop.**executionengine.**
>>>> mapReduceLayer.PigMapOnly$Map.**map(PigMapOnly.java:65)
>>>>    at org.apache.hadoop.mapred.**MapRunner.run(MapRunner.java:**50)
>>>>    at org.apache.hadoop.mapred.**MapTask.runOldMapper(MapTask.**
>>>> java:358)
>>>>    at org.apache.hadoop.mapred.**MapTask.run(MapTask.java:307)
>>>>    at org.apache.hadoop.mapred.**Child.main(Child.java:170)
>>>> Caused by: java.io.IOException: Caught exception processing input row
>>>> [null]
>>>>    at
>>>> org.apache.pig.piggybank.**evaluation.math.DoubleMax.**
>>>> exec(DoubleMax.java:70)
>>>>    at
>>>> org.apache.pig.piggybank.**evaluation.math.DoubleMax.**
>>>> exec(DoubleMax.java:57)
>>>>    at
>>>>
>>>> org.apache.pig.backend.hadoop.**executionengine.physicalLayer.**
>>>> expressionOperators.**POUserFunc.getNext(POUserFunc.**java:201)
>>>>    ... 10 more
>>>> Caused by: java.lang.NullPointerException
>>>>    ... 13 more
>>>>
>>>> *My Code:*
>>>> *FFW2 = Load 'final_free_w2.txt';
>>>> FFW3 = Load 'final_free_w3.txt';
>>>> FFW2_RankG_RankCate = FOREACH FFW2 GENERATE $0, $4, $3;
>>>> FFW3_RankG_RankCate = FOREACH FFW3 GENERATE $0, $4, $3;
>>>> FF23 = JOIN FFW2_RankG_RankCate BY $0, FFW3_RankG_RankCate BY $0;
>>>> FF23_Filtered = Foreach FF23 Generate $0,$2,$5;
>>>>    STORE FF23_Filtered INTO 'FF23_Filtered.txt';
>>>>
>>>>    REGISTER
>>>> /home/training/Desktop/1pig/**pig-0.7.0/contrib/piggybank/**
>>>> piggybank.jar
>>>> A = LOAD 'FF23_Filtered.txt' AS (appID, rank2, rank3);
>>>> B = FOREACH A GENERATE appID,
>>>> org.apache.pig.piggybank.**evaluation.math.MAX((double)**rank2,
>>>> (double)rank3);
>>>> store B into 'FF23_FJM.txt'; *
>>>>
>>>>
>>>> -->  Can any one pls let me know, what is the exact reason which is
>>>> causing
>>>> above exception...
>>>> I also made sure that, the file* FF23_Filtered.txt* is not NULL.
>>>>
>>>> ---
>>>> Thanks&  Regards,
>>>> Narayan.
>>>>
>>>>
>>>
>

Reply via email to