3

may/reduce コードを作成するために Hadoop C++ パイプを使用したいと考えています。そして、入力データはバイナリです。getSplits ロジックを制御するために inputformat をカスタマイズしたいのですが、それが可能な解決策であるかどうかはわかりません。cli でカスタム inputformat クラスを割り当てようとしましたが、実行できませんでした。

../bin/hadoop pipes -conf testframework.xml -input input -output output -inputformat TestInputFormat.class

以下のエラーが発生しました:

Exception in thread "main" java.lang.ClassNotFoundException: TestInputFormat.class
        at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:247)
        at org.apache.hadoop.conf.Configuration.getClassByName(Configuration.java:812)
        at org.apache.hadoop.mapred.pipes.Submitter.getClass(Submitter.java:372)
        at org.apache.hadoop.mapred.pipes.Submitter.run(Submitter.java:421)
        at org.apache.hadoop.mapred.pipes.Submitter.main(Submitter.java:494)

それは理にかなっていますか?

4

1 に答える 1

0

あなたの問題は最後の .class だけだと思います。しかし、すでに削除しようとした場合。これを解決するために私がしたことを試すことができます。.jar ( jar cf libJar.jar packageName) にパックしました。-libjars を使用して参照し、-inputformat packageName.TestInputFormat. これが役立つことを願っています。

編集 1

別の方法は-D mapred.input.format.class=packageName.TestInputFormat

于 2015-02-18T12:33:05.893 に答える