Python流处理:如何减少到多个输出?(虽然Java可以)

5 投票
1 回答
1605 浏览
提问于 2025-04-17 03:21

我读了《Hadoop实战》,发现用Java中的MultipleOutputFormatMultipleOutputs类可以把数据减少到多个文件。不过我不太确定怎么用Python streaming来实现同样的功能。

比如说:

                  / out1/part-0000
mapper -> reducer   
                  \ out2/part-0000

如果有人知道、听说过或者做过类似的事情,请告诉我。

1 个回答

2

Dumbo Feathers 是一组 Java 类,可以和 Dumbo 一起使用。Dumbo 是一个 Python 库,帮助你轻松编写高效的 Python M/R 程序,用于 Hadoop。

简单来说,在你的 Python Dumbo M/R 工作中,你会输出一个包含两个元素的键。第一个元素是你想输出到的目录的名字,第二个元素是真正的键。你选择的输出类会检查这个键的内容,找出应该使用哪个输出目录,然后利用 MultipleOutputFormat 将数据写入不同的子目录。

使用 Dumbo 进行这个操作很简单,因为它使用了 typedbytes 作为输出格式。不过,我觉得即使你使用其他输出格式,这个操作也是可以做到的。

撰写回答