Apache pig Apache Pig:UDF:错误1003:找不到alias fileterd的运算符

Apache pig Apache Pig:UDF:错误1003:找不到alias fileterd的运算符,apache-pig,Apache Pig,通过名称vaidateUser在pig中编写了一个自定义UDF,用于验证用户名 public class ValidateUser extends FilterFunc { public Boolean exec(Tuple tuple) throws IOException { // custom validation code } } 该类是默认包的一部分,也是pig\u udfs.jar的一部分 此JAR用于pig脚本:valida

通过名称
vaidateUser
在pig中编写了一个自定义UDF,用于验证用户名

 public class ValidateUser extends FilterFunc {
       public Boolean exec(Tuple tuple) throws IOException {
           // custom validation code 
       }
 }
该类是默认包的一部分,也是
pig\u udfs.jar
的一部分

此JAR用于pig脚本:
validateUsers.pig

 REGISTER 'pig_udfs.jar';

 users = load 'users.txt' using PigStorage(',') as (user:chararray);

 validUsers = filter users by ValidateUser(user);

 dump validUsers;
已尝试使用以下命令执行脚本:

 pig -x local validateusers.pig
如有如下错误,请提供解决此问题的任何意见/想法

清管器堆栈跟踪:



我没有遇到任何问题,
自定义过滤器自定义项及其工作正常,你能试试吗?。
在下面的示例中,我将过滤掉所有不等于
“test”
的名称

users.txt

test
mike
test
john
PigScript:

REGISTER 'pig_udfs.jar';

users = load 'users.txt' using PigStorage(',') as (user:chararray);
validUsers = filter users by ValidateUser(user);
dump validUsers;
(john)
(mike)
ValidateUser.java

import java.io.IOException;
import org.apache.pig.FilterFunc;
import org.apache.pig.data.Tuple;

public class ValidateUser extends FilterFunc {
        @Override
                public Boolean exec(Tuple input) throws IOException {
                        try {
                                String str = (String)input.get(0);
                                return (!str.equals("test"));
                        }
                        catch (IOException ee) {
                                throw ee;
                        }
                }
}
输出:

REGISTER 'pig_udfs.jar';

users = load 'users.txt' using PigStorage(',') as (user:chararray);
validUsers = filter users by ValidateUser(user);
dump validUsers;
(john)
(mike)
确保在类路径中设置了piggybank.jar

> javac ValidateUser.java
> jar -cvf pig_udfs.jar ValidateUser.class
> pig -x local validateusers.pig