我的自定义项将给定的输入转换为大写
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;
请帮帮我。
2条答案
按热度按时间2ic8powd1#
或者最好使用这种catch块…这样,只有空指针异常被忽略。。。
3zwtqj6y2#
改变你的想法
Catch Block
返回null
以防出现异常,所以作业不会停止。。。有点像下面所示。。。