PIG 中 UDF 中的 java.lang.NullPointerException
Posted
技术标签:
【中文标题】PIG 中 UDF 中的 java.lang.NullPointerException【英文标题】:java.lang.NullPointerException in UDF in PIG 【发布时间】: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;
请帮帮我。
【问题讨论】:
你可以使用pig.apache.org/docs/r0.14.0/func.html#upper 【参考方案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;
【讨论】:
以上是关于PIG 中 UDF 中的 java.lang.NullPointerException的主要内容,如果未能解决你的问题,请参考以下文章