我正在尝试通过现有的 java 应用程序流式传输数据,并且作为测试刚刚创建了一个可运行的 jar 以打印到标准输出:
public class Myapp {
public static void main(String[] args) {
for (int i=0;i<100;i++){
System.out.println(i);
}
}
}
创建罐子后,我可以这样做:
> 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-* 文件全部为空。从标准输入读取数据没有帮助,这适用于 Python 和 Perl,或者使用带有 map 函数的 java API。通过 jar 流式传输或使用 打印有什么特别之处System.out.println
吗?