Java で最初の Pig UDF をビルドしようとしていますが、Eclipse でビルドするときに関数を呼び出すのに問題があります (クラス パスに pig 0.10.0 jar ファイルがあります)。ソースファイルが入って/com/foo/bar/pig/IsInternal.java
おり、クラスファイルは/bin/com/foo/bar/pig/IsInternal.class
Eclipseによって配置されています。
私のコードは次のようになります。
package com.foo.bar.pig;
// ... imports ...
public class IsInternal extends FilterFunc {
public Boolean exec(Tuple input) throws IOException {
// ... code here ...
return true; // or false
}
}
コンパイルしたらjar -cf PiggyBank.jar BiggyBank
、プロジェクト ディレクトリのすぐ外側から実行して、すべてを JAR にパッケージ化します。Pig を実行すると、grunt シェルで次のことを試します。
REGISTER /full/path/to/PiggyBank.jar
DEFINE isInternal com.foo.bar.pig.IsInternal();
A = LOAD '/some/file/in/hdfs' USING PigStorage();
B = FILTER A BY isInternal($1);
その時点で、次のエラーが表示されます。
ERROR 1070: Could not resolve com.foo.bar.pig.IsInternal using imports: [, org.apache.pig.builtin, org.apache.pig.impl.builtin.]
Java コード自体は問題なく (テスト済みです)、DEFINE でさまざまなクラス パスを試してみましたが、うまくいきませんでした。オンラインで役立つものは何も見つかりませんでした。どうすればこれを修正できますか?