我正在考虑如何将hadoop的输出写入txt文件,而不是写入hdfs。例如,我输入以下代码:
// Create the job specification object
Job job1 = new Job();
job1.setJarByClass(Main.class);
job1.setJobName("Day Measurment");
// Setup input and output paths
FileInputFormat.addInputPath(job1, new Path(args[0]));
FileOutputFormat.setOutputPath(job1, new Path(args[1]));
// Set the Mapper and Reducer classes
job1.setMapperClass(DayMapper.class);
job1.setReducerClass(LogReducer.class);
// Specify the type of output keys and values
job1.setOutputKeyClass(Text.class);
job1.setOutputValueClass(LongWritable.class);
// Wait for the job to finish before terminating
job1.waitForCompletion(true);
PrintWriter pw = new PrintWriter("hadoop.csv");
pw.println("abc");
pw.close();
在我测试了我的程序之后,hadoop运行得很好,但是我只得到hadoop.csv文件,里面没有内容。这是一个空文件,里面没有“”。
有人能告诉我为什么吗?或者告诉我如何将输出打印到常规文件(.csv或.log)中,而不是打印到hdfs中?
2条答案
按热度按时间j1dl9f461#
默认情况下,创建的printwriter对象不使用flush()。若要启用此选项,可以在创建printwriter时向构造函数添加第二个参数。
如果您不想这样做,您应该能够简单地使用
flush()
-方法使用
flush()
将确保要写入的任何数据都不会卡在任何内部缓冲区中,而只是被推送到底层输出流中。看看这个:printwriter-javaapi
mftmpeh82#