2

私は既存の Java アプリを介してデータをストリーミングしようとしています。テストとして、実行可能な jar を作成して stdout に出力しました。

public class Myapp {
    public static void main(String[] args) {

        for (int i=0;i<100;i++){
            System.out.println(i);
        }
    }
}

jarを作成した後、これを行うことができます:

> java -jar  myapp.jar a b < input.txt > myout1.txt

myout1.txt にデータが入力されます。を使用してhadoopでこれを実行すると

hadoop jar /usr/lib/hadoop-0.20-mapreduce/contrib/streaming/hadoop-streaming-2.0.0-mr1-cdh4.0.1.jar -file 'myapp.jar' -numReduceTasks 0 -input "input.txt" -出力 "myout.txt" -mapper "java -jar myapp.jar"

ジョブは成功しますが、myout.txt/part-* ファイルはすべて空です。stdin からのデータの読み取りは役に立ちません。これは、Python と Perl で機能するか、マップ関数で Java API を使用して機能します。jar を介したストリーミングや での印刷について何か特別なことはありSystem.out.printlnますか?

4

0 に答える 0