【问题标题】:java.lang.NullPointerException in UDF in PIGPIG 中 UDF 中的 java.lang.NullPointerException
【发布时间】:2016-01-10 17:56:40
【问题描述】:

我的 UDF 将给定的输入转换为大写

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(',') AS (EMPLOYEE_ID:INT,FIRST_NAME:CHARARRAY,LAST_NAME:CHARARRAY,EMAIL:CHARARRAY,PHONE_NUMBER:CHARARRAY,HIRE_DATE:CHARARRAY ,JOB_ID:CHARARRAY,SALARY:INT,MANAGER_ID:CHARARRAY,DEPARTMENT_ID:CHARARRAY);

2.) B = FOREACH emp GENERATE EMPLOYEE_ID,myudfs.UPPER(FIRST_NAME) AS LINE;

当我做 DUMP B 时; 我收到“java.lang.NullPointerException”,我认为这是因为我的 FIRST-NAME 在其中一行中有 null。

我尝试删除空值,然后转储结果,但我仍然收到空指针异常。
C = FILTER B BY 行不为空; 转储 C;

请帮帮我。

【问题讨论】:

标签: exception nullpointerexception apache-pig udf


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    将您的Catch Block 更改为在出现异常时返回null,因此工作不会停止...有点如下所示...

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多