私は既存の 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
ますか?