pig中udf中的java.lang.nullpointerexception

iswrvxsc  于 2021-06-21  发布在  Pig
关注(0)|答案(2)|浏览(526)

我的自定义项将给定的输入转换为大写

package myudfs;
import java.io.IOException;
import org.apache.pig.EvalFunc;
import org.apache.pig.data.Tuple;

public class UPPER extends EvalFunc<String>
{
public String exec(Tuple input) throws IOException{

    if(input==null|| input.size()==0)
        return null;
    try{
        String str=(String)input.get(0);
        return str.toUpperCase();
    }catch(Exception e){
        throw new IOException("Caught exception processing input row",e);

    }
}
}

我的输入文件是

100,,King,SKING,515.123.4567,17-JUN-87,AD_PRES,24000,,90
101,Neena,Kochhar,NKOCHHAR,515.123.4568,21-SEP-89,AD_VP,17000,100,90
102,Lex,De Haan,LDEHAAN,515.123.4569,13-JAN-93,AD_VP,17000,100,90

我执行了以下步骤-
1.)emp=load'/home/warehouse/datasets/emp.csv',使用pigstorage(',')作为(employee\u id:int,first)_name:chararray,最后一个_name:chararray,email:chararray,电话_number:chararray,雇用_date:chararray,工作编号:chararray,salary:int,经理:chararray,部门:chararray);
2.)b=foreach emp生成employee\u id,myudfs.upper(first\u name)作为行;
当我甩b的时候;我得到了“java.lang.nullpointerexception”,我想这是因为我的名字在其中一行中有null have。
我试图删除空值,然后转储结果,但仍然得到空指针异常。
c=按行筛选b不为空;转储c;
请帮帮我。

2ic8powd

2ic8powd1#

或者最好使用这种catch块…这样,只有空指针异常被忽略。。。

catch(NullPointerException e){
        System.out.println("NullPointerException");
        return null;
       } catch (Exception e){
        throw WrappedIOException.wrap("Caught exception processing input row ", e);
       }
3zwtqj6y

3zwtqj6y2#

改变你的想法 Catch Block 返回 null 以防出现异常,所以作业不会停止。。。有点像下面所示。。。

catch (Exception e) {
    System.err.println("Error with ...");
    return null;
}

相关问题