JAVA 错误 1070 中的 PIG UDF [英] PIG UDF in JAVA ERROR 1070

查看:27
本文介绍了JAVA 错误 1070 中的 PIG UDF的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在 /home/GED385/pigScripts 中创建了 UDF_UPPER.jar 文件.

I have created UDF_UPPER.jar file in /home/GED385/pigScripts.

[GED385@snshadoope1 pigScripts]$ jar tf /home/GED385/pigScripts/UDF_UPPER.jar | grep UPPER
UPPER.class

但是在执行猪时,我遇到了以下错误.

But while executing the pig i am getting below error.

grunt> exec digital_web_trkg_9.pig
2012-11-30 00:15:32,027 [main] ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1070: Could not resolve UDF_UPPER.UPPER using imports: [, org.apache.pig.builtin., org.apache.pig.impl.builtin.]
Details at logfile: /data/1/GED385/pigScripts_digital/pig_1354233151486.log

PIg 脚本:

REGISTER /usr/lib/pig/contrib/piggybank/java/piggybank.jar;
REGISTER /home/GED385/pigScripts/UDF_UPPER.jar;

A = LOAD '/user/GED385/digital/scrn_rsln_id_cln.dat' USING PigStorage('|')
                  AS (web_vstr_scrn_rsln_id:int,web_vstr_scrn_rsln_desc :chararray, edw_publn_id:chararray);

B = LOAD '/user/GED385/digital/scrn_rsln_id1_cln.dat' USING PigStorage('|')
                  AS (web_vstr_scrn_rsln_id:int,web_vstr_scrn_rsln_desc :chararray, edw_publn_id:chararray);

H = LOAD '/user/GED385/digital/scrn_rsln_id_base_unload_cln.dat' USING PigStorage('|')
                  AS (web_vstr_scrn_rsln_id_1:int,web_vstr_scrn_rsln_desc :chararray, edw_publn_id:chararray);

J = GROUP H BY edw_publn_id;

K = FOREACH J GENERATE group,  MAX(H.web_vstr_scrn_rsln_id_1);

C = UNION A, B;

D = FILTER C BY web_vstr_scrn_rsln_desc is not null;

E = DISTINCT D;

F = JOIN E BY web_vstr_scrn_rsln_desc LEFT , H BY web_vstr_scrn_rsln_desc;

I = FILTER F BY H::web_vstr_scrn_rsln_id_1 is null;

--G = FOREACH I GENERATE H::web_vstr_scrn_rsln_id_1,E::web_vstr_scrn_rsln_desc,E::edw_publn_id;
G = FOREACH I GENERATE K.$1+1,E::web_vstr_scrn_rsln_desc,E::edw_publn_id,UDF_UPPER.UPPER(E::web_vstr_scrn_rsln_desc);

--L = JOIN G BY $2 LEFT , K BY $0;

DUMP G;

推荐答案

根据以下输出,

[GED385@snshadoope1 pigScripts]$ jar tf /home/GED385/pigScripts/UDF_UPPER.jar | grep UPPER
UPPER.class

UPPER.java 没有名为UDF_UPPER"的包.

UPPER.java has no package named 'UDF_UPPER'.

并且错误 1070:您正在尝试在 UDF_UPPER 包中导入 UPPER 类.

And in error 1070 : you are trying to import UPPER class inside UDF_UPPER package.

UDF_UPPER.UPPER 表示 "<包名>.<类名>"

UDF_UPPER.UPPER means "<package name>.<class name>"

但是由于您的 jar 中没有 UDF_UPPER 包,因此在 Pig 脚本中仅使用 UPPER 如下:

But as there is no UDF_UPPER package in your jar, so use only UPPER in pig script as below :

G = FOREACH I GENERATE K.$1+1,E::web_vstr_scrn_rsln_desc,E::edw_publn_id,UPPER(E::web_vstr_scrn_rsln_desc);

希望它能解决您的问题.

Hope, it solves your problem.

这篇关于JAVA 错误 1070 中的 PIG UDF的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆