我正在寻找一个涉及从多个文件中读取密钥数据的问题的解决方案。在单个映射步骤中,我需要同时在同一位置的特定键的所有值。我在White的书中看到关于“洗牌”的讨论,我很想知道当你退出合并时,输入到reducer是按键排序,如果一个键的所有数据都在那里....如果你可以指望。
更大的图片是我想要做一个穷人的三重商店联合会,而我想要加载到内存商店的三元组并不都来自同一个文件。它是一个垂直(?)分区,其中特定键的值位于不同的文件中。换句话说,完整记录的列各自来自不同的文件。 Hadoop会重新组装吗? ......至少一次只能输入一个键。
答案 0 :(得分:4)
简而言之:是的。在Hadoop作业中,分区程序选择哪个reducer接收哪个(键,值)对。从Yahoo tutorial section on partitioning引用:“对于任何键,无论哪个映射器实例生成它,目标分区都是相同的”。对于通常使用map reduce解决的许多类型的算法(例如分布式排序,这就是您所描述的),这也是必要的。