Python流处理:如何减少到多个输出?(虽然Java可以)
我读了《Hadoop实战》,发现用Java
中的MultipleOutputFormat
和MultipleOutputs
类可以把数据减少到多个文件。不过我不太确定怎么用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 作为输出格式。不过,我觉得即使你使用其他输出格式,这个操作也是可以做到的。