在mapreduce程序中,我们只需要设置输出路径 FileOutputFormat.setOutputPath
并使用mapper或reducer的 context.write(key, value)
;
文件编写概念实际上是如何工作的?
mapper/reducer将不断地发出记录。
每个记录都会直接发送到hdfs吗?
或
一旦申请完成,那么它将做一个 copyFromLocal
?
或者
它在本地文件系统中为每个Map器或还原器创建一个临时文件?
http://hadoop.apache.org/docs/current/hadoop-mapreduce-client/hadoop-mapreduce-client-core/mapreducetutorial.html#example:\u wordcount\u v1.0版
1条答案
按热度按时间uklbhaso1#
记录被写入字节流,并定期刷新到hdfs上的磁盘。每个记录不是单独写的,因为这将是一个非常昂贵的操作。此外,数据不会写入本地文件系统,因为这将是一个非常昂贵的操作。
每当我对hadoop有任何疑问时,我都倾向于利用hadoop的开源特性,深入研究源代码。在本例中,您需要查看输出数据时使用的类—textoutputformat和fsdataoutputstream。