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