执行UDF时Pig错误1070

我正在尝试在猪中加载我自己的UDF。 我已经使用eclipse的导出function将它变成了一个jar。 我试图在本地运行它,所以我可以确保它在我把jar放在HDFS上之前有效。 在本地运行时,我收到以下错误:

ERROR 1070: Could not resolve myudfs.MONTH using imports: [, org.apache.pig.builtin., org.apache.pig.impl.builtin.]

脚本

 REGISTER myudfs.jar; --DEFINE MONTH myudfs.MONTH; A = load 'access_log_Jul95' using PigStorage(' ') as (ip:chararray, dash1:chararray, dash2:chararray, date:chararray, getRequset:chararray, status:int, port:int); B = FOREACH A GENERATE myudfs.MONTH(date); DUMP B; 

function

 package myudfs; import java.io.IOException; import org.apache.pig.EvalFunc; import org.apache.pig.data.Tuple; import org.apache.pig.impl.util.WrappedIOException; @SuppressWarnings("deprecation") public class HOUR extends EvalFunc { public String exec(Tuple input) throws IOException { if (input == null || input.size() == 0) return null; try{ String str = (String)input.get(0); return str.substring(1, 3); }catch(Exception e){ throw WrappedIOException.wrap("Caught exception processing input row ", e); } } } 

工作目录

 1.pig 2.pig bin myudfs.jar pig.jar pig-withouthadoop.jar src/ 

运行命令

pig -x local 2.pig

jar子的结构

  0 Thu May 02 12:16:26 MDT 2013 META-INF/ 68 Thu May 02 12:16:26 MDT 2013 META-INF/MANIFEST.MF 0 Thu May 02 12:05:50 MDT 2013 myudfs/ 573 Thu May 02 12:15:10 MDT 2013 myudfs/HOUR.java 

我真的很接近开始查看显示器,所以我只是寻求一些帮助和方向。 让我知道可能出现的问题。

您的UDF类名称称为HOUR

你的猪拉丁不应该这样吗?

 B = FOREACH A GENERATE myudfs.HOUR(date);