apache pig:udf:error 1003:找不到alias fileterd的运算符

l5tcr1uw  于 2021-06-25  发布在  Pig
关注(0)|答案(1)|浏览(285)

用pig的名字写了一个自定义自定义自定义项 vaidateUser 验证用户名。

public class ValidateUser extends FilterFunc {
       public Boolean exec(Tuple tuple) throws IOException {
           // custom validation code 
       }
 }

类是默认包的一部分,也是 pig_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

如有以下错误,如有任何意见或想法,我们将不胜感激!
清管器堆栈跟踪:

ERROR 1003: Unable to find an operator for alias fileterd

org.apache.pig.impl.logicalLayer.FrontendException: ERROR 1003: Unable to find an operator for alias fileterd
at org.apache.pig.PigServer.openIterator(PigServer.java:732)
at org.apache.pig.tools.grunt.GruntParser.processDump(GruntParser.java:615)
at org.apache.pig.tools.pigscript.parser.PigScriptParser.parse(PigScriptParser.java:303)
at org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.java:168)
at org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.java:144)
at org.apache.pig.tools.grunt.Grunt.exec(Grunt.java:90)
at org.apache.pig.Main.run(Main.java:500)
at org.apache.pig.Main.main(Main.java:107)

sqyvllje

sqyvllje1#

我没有面对任何问题 custom filter UDF 你能试试这个吗?。在下面的例子中,我将过滤掉所有不等于 "test" .
用户.txt

test
mike
test
john

Pig手稿:

REGISTER 'pig_udfs.jar';

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

验证用户.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;
                        }
                }
}

输出:

(john)
(mike)

确保在类路径中设置了piggybank.jar

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

相关问题