2

UDF_UPPER.jarにファイルを作成しました/home/GED385/pigScripts

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

しかし、豚を実行している間、私はエラーを下回っています。

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;
4

3 に答える 3

0

UPPERクラスはどのJavaパッケージに属していますか?

pigがUPPERクラスを見つけるには、UPPERクラスをそのパッケージ名で修飾する必要があります。jarファイル名を参照する必要はありません。

したがって、UPPERクラスがに属していた場合com.blah

あなたは書くでしょう:

G = FOREACH I GENERATE K.$1+1,E::web_vstr_scrn_rsln_desc,E::edw_publn_id,com.blah.UPPER(E::web_vstr_scrn_rsln_desc);
于 2012-11-30T10:14:54.170 に答える
0

次の出力によると、

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

UPPER.java には「UDF_UPPER」という名前のパッケージがありません。

エラー 1070 : UDF_UPPERパッケージ内に UPPER クラスをインポートしようとしています。

UDF_UPPER.UPPER意味 "<package name>.<class name>"

ただし、jar にはUDF_UPPERUPPERパッケージがないため、以下のように pig スクリプトでのみ使用してください。

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

うまくいけば、それはあなたの問題を解決します。

于 2014-02-24T06:52:56.040 に答える
0
using imports: [, org.apache.pig.builtin., org.apache.pig.impl.builtin.]

これは、piggybank とあなたの jar ファイルが実際にインポートされていないことを示しています。

これは、jar ファイルの絶対パスを指定していることに関連していると思います。

代わりに、ただ実行してくださいREGISTER UDF_UPPER.jar

于 2012-12-01T00:04:36.687 に答える