目前,我正在使用默认的分区器运行一些hadoop作业,它通常为每个reducer提供相等的数据块。但是,我的reducer键包含两个字段:
1,foo
2,bar
1,baz
每个reducer根据第一个键写入不同的文件夹。
假设我有两个减速机,每个减速机得到50%的数据,并编写以下文件:
1/chunk-0 # first reducer
chunk-1 # second reducer
2/chunk-0 # first reducer
/chunk-1 # second reducer
但是,如果20%的第一个缩减器数据具有键1,80%具有键2,50%的第二个缩减器数据具有键1,50%具有键2,则 chunk-0
以及 chunk-1
在每个文件夹中都是不均匀的。
如何确保在最终输出中,每个文件夹中的块大小相等?似乎我需要一个分区函数,它可以做这样的事情:对于每个reducer,n%的reducer数据是key 1,m%的reducer数据是key 2。或者在hadoop之外做分区会更简单吗?
暂无答案!
目前还没有任何答案,快来回答吧!