错误2078:从udf捕获错误

tv6aics1  于 2021-06-02  发布在  Hadoop
关注(0)|答案(0)|浏览(401)

我得到错误“error 2078:catched error from udf:com.hadoop.pig.splitrec[catched exception processing input row[1]]”。我确信输入字符串越界了,但我不确定是哪个记录(记录编号)导致了问题。
我正在尝试创建日志以显示导致问题的记录,但我不确定是否要调试以打印/记录错误记录。
输入如下所示:

**pxw01yin 12000099pgen pxw01yinffffffff pxw01yinimfguipy04301y301 jfk 00888jfk 008880001 pimf 0000n/actrc5/txn08/scr301/序列/tex021@

pxw01pin 12000099pgen PXW01PINFFFFFFF pxw01pinimfguiav04301p301每03615每036150001 pimf 0000n/actrck/txn08/scr301/seq/tex021@**
上面的行是两个记录,我已经测试了它们(使用limit),它们不会引起问题。我有超过150kb的输入数据。
我使用的脚本:

  1. SPLT_REC1 = load '/user/hduser/output/realdata/pig_out6/part-m-00000' as (tran_array:chararray);
  2. register /home/cloudera/workspace/SplitRec.jar;
  3. define SplitRec com.Hadoop.pig.SplitRec();
  4. SPLT_REC2 = foreach SPLT_REC1 generate SplitRec(tran_array);
  5. store SPLT_REC2 into '/user/hduser/output/realdata/pig_out7';
  6. package com.Hadoop.pig;
  7. import java.io.IOException;
  8. import org.apache.pig.EvalFunc;
  9. import org.apache.pig.data.Tuple;
  10. import org.apache.pig.impl.util.WrappedIOException;
  11. @SuppressWarnings("deprecation")
  12. public class SplitRec extends EvalFunc<String> {
  13. public String exec(Tuple input) throws IOException {
  14. if (input == null || input.size() == 0)
  15. return null;
  16. try {
  17. String Str1 = (String)input.get(0);
  18. String delim1 = "PIMF+";
  19. String[] tokens1 = Str1.split(delim1);
  20. String part3 = tokens1[0];
  21. String part4 = tokens1[1];
  22. int len1 = part4.length();
  23. String part5 = part4.substring(8,len1);
  24. String conCat1 = part3+":"+part5;
  25. return conCat1;
  26. }
  27. catch(Exception e) {
  28. throw WrappedIOException.wrap("Caught exception processing input row ", e);
  29. }
  30. }

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题