在MapReduce程序中,我们只设置输出路径FileOutputFormat.setOutputPath
并使用mapper或reducer的context.write(key, value)
将结果写入HDFS文件;
文件编写概念的实际效果如何?
Mapper / Reducer将不断发出记录。
是否会将每条记录直接发送到HDFS?
或
申请完成后,它会执行copyFromLocal
?
或
它为每个映射器或缩减器在本地文件系统中创建临时文件吗?
答案 0 :(得分:0)
记录被写入字节流,并定期刷新到HDFS上的磁盘。每个记录都不是单独写的,因为这将是一个非常昂贵的操作。此外,数据也不会再写入本地文件系统,这将是一项非常昂贵的操作。
每当我对Hadoop中的事情有疑问时,我倾向于利用其开源特性并深入研究源代码。在这种情况下,您需要查看输出数据时使用的类 - TextOutputFormat和FSDataOutputStream。