编写单个Hadoop映射会将输出减少为多个S3对象

时间:2009-12-04 08:55:55

标签: amazon-s3 hadoop

我正在实现一个需要在多个S3对象中创建输出的Hadoop Map reduce作业。 Hadoop本身只创建一个输出文件(一个S3对象),但我需要将输出分区为多个文件。

我如何实现这一目标?

2 个答案:

答案 0 :(得分:3)

我是通过使用S3工具包直接将我的reducer方法的输出写入S3来实现的。由于我在EC2上运行,因此速度快且免费。

通常,您希望Hadoop尽可能地处理您的输入和输出,以获得更清晰的映射器和减速器;当然,您希望在管道的最后写入S3,让Hadoop的代码移动完成HDFS的工作。

在任何情况下,我建议您执行所有数据分区,并在最终reduce任务中将整个输出集写入S3,每个S3文件一组。这会尽可能地将代码逻辑放在代码中。这得到了回报,因为我最终得到了一个最小的Hadoop S3工具包,我用它来完成几个任务流程。

我需要在我的reducer代码中写入S3,因为S3 / S3n文件系统还不成熟;他们现在可能会工作得更好。

答案 1 :(得分:0)

您是否也知道MultipleOutputFormat? 它与S3无关,但通常它允许将输出写入多个文件,实现给定的逻辑。