使用Hadoop,我的Reducer是否可以保证使用相同的密钥获取所有记录?

sam*_*amg 14 hadoop hive mapreduce uniq

我正在使用Hive运行Hadoop作业实际上应该uniq在许多文本文件中排队.在reduce步骤中,它为每个键选择最近时间戳记录.

Hadoop是否保证具有相同键的每个记录(通过映射步骤输出)将转到单个reducer,即使在群集中运行了许多Reducer?

我担心在具有相同密钥的一组记录中间发生shuffle后,mapper输出可能会被拆分.

Kar*_*son 14

密钥的所有值都将发送到同一个reducer.看到这个Yahoo! 教程进行更多讨论.

此行为由分区程序确定,如果使用默认分区程序以外的分区程序,则可能不是这样.


Bkk*_*rad 5

实际上,不!您可以创建一个Partitioner在每次getPartition调用时将相同的密钥发送到不同的reducer .对于大多数应用程序来说,这通常不是一个好主意.