Pig error 1070 when doing UDF

做~自己de王妃 提交于 2020-01-03 05:09:05

问题


I am trying to load up my own UDF in pig. I have made it into a jar using eclipse's export function. I am trying to run it locally so I can make sure it works before I put the jar on HDFS. When running it locally, I get the following error:

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

Script

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<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.substring(1, 3);
        }catch(Exception e){
            throw WrappedIOException.wrap("Caught exception processing input row ", e);
        }
    }
}

Working Directory

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

Running command

pig -x local 2.pig

Structure of 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

I am really close to start chucking monitors, so I am just looking for some help and direction. Let me know what could be wrong.


回答1:


Your UDF class name is called HOUR

So shouldn't your pig latin be this?

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


来源:https://stackoverflow.com/questions/16346191/pig-error-1070-when-doing-udf

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!