0

ローカルモードで完全に実行される豚UDFがありますが、次のように失敗します。クラスターで試行したときに、引数「null」で「com.bla.myFunc」をインスタンス化できませんでした。

4

1 に答える 1

0

私の間違いは、タスクログを十分に掘り下げることではありませんでした。jobTracker UIを介してそこを掘り下げると、根本的な原因は次のとおりであることがわかります。

Caused by: java.lang.ClassNotFoundException: com.google.common.collect.Maps
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)

だから、いつものほかに:

    pigServer.registerFunction("myFunc", new FuncSpec("com.bla.myFunc"));

追加する必要があります:

    registerJar(pigServer, Maps.class);

UDFが使用するjarの場合も同様です。

もう1つのオプションは、build-jar-with-dependenciesを使用することですが、クラスパスでpig.jarを自分の前に配置する必要があります。そうしないと、次の問題に取り組むことになります。埋め込みhadoop-pig:正しい使用方法は何ですか。 UDFの自動addContainingJar?

于 2012-06-17T14:16:29.253 に答える