【发布时间】: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