我想在HDFS中创建一个包含大量行的文件,每行都由不同的map调用生成。我不关心行的顺序,只是它们都被添加到文件中。我该如何做到这一点?
如果无法做到这一点,那么有没有一种标准方法可以生成唯一的文件名,将每行输出放入一个单独的文件中?
答案 0 :(得分:1)
map和reduce函数都应该输出行。换句话说,你的reduce函数是一个传递函数,并没有做太多。将reducers的数量设置为1.输出将是一个文件中所有行的列表。
答案 1 :(得分:1)
此刻无法附加到hadoop中的现有文件,但这并不是你想要做的事情。听起来您希望将Map Reduce作业的输出转换为单个文件,这很有可能。输出文件的数量(小于或等于)减速器的数量,因此如果您将减速器的数量设置为1,您将获得单个输出文件。
然而,在你去之前做这件事,想想你是否真的想要这样。您将在管道中创建一个瓶颈,它需要通过一台机器传递所有数据以进行减少。在HDFS分布式文件系统中,拥有一个文件和拥有多个文件之间的区别是非常透明的。如果您想在群集外部使用单个文件,则最好使用文件系统工具中的getmerge。