在MapReduce程序中,我们只需设置输出路径FileOutputFormat.setOutputPath
,然后使用mapper或reducer的context.write(key, value)
将结果写入HDFS文件;
文件编写概念实际上是如何工作的?
是否将每个记录直接发送到HDFS?
要么
一旦应用程序完成,它将执行
copyFromLocal
吗?要么
它为每个映射器或化简器在本地文件系统中创建一个临时文件?
http://hadoop.apache.org/docs/current/hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapReduceTutorial.html#Example:_WordCount_v1.0
最佳答案
记录被写入字节流,并定期刷新到HDFS上的磁盘。每个记录不是单独写入的,因为这将是非常昂贵的操作。同样,数据也不会写入本地文件系统,因为这将是非常昂贵的操作。
每当我对Hadoop中的事情有疑问时,我都倾向于利用其开源性质并深入研究源代码。在这种情况下,您需要查看输出数据时使用的类-TextOutputFormat和FSDataOutputStream。
关于hadoop - 映射器或化简器如何将数据写入HDFS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28564358/