我是mapred的新手,我想知道使用自定义分区和Mapreduce中的Multiple Outputs概念根据特定条件创建多个输出之间的区别。
最佳答案
使用自定义分区,您将把数据发送到不同的reducer,并且每个reducer都会写入一个文件,其中包含所有由它处理的数据。
part-r-00001, part-r-00002 . . .
使用MiltipleOutputs,每个 reducer 都可以使用自定义名称写入不同的文件(多个输出)。
Tag1-r-00001, Tag2-r-00001, Tag1-r-00002, Tag2-r-00002 . . .
客户分区用于在处理之前将相关数据分组在一起,多个输出用于在处理之后将数据拆分为输出。
使用MultipleOutputs,您将能够识别数据而无需跟踪 reducer 的数量,并且在将来,如果您需要增加或减少还原器的数量(随着数据的变化),您仍然能够识别前缀的旧数据。