hive估算reduce的逻辑如下:
(1) 判断Job是否需要reduce操作,如不需要reduce操作,reduce数设置为0,跳出;如需要reduce操作,执行步骤(2);
(2) 判断Job是否在编译时确定reduce数为1,如编译确定为1,reduce数设置为1,跳出;如需要reduce操作,执行步骤(3);
(3) 判断Job是否手动设置reduce数,如果手动设置reduce数,reduce数设置为此值,跳出;如未手动设置,执行步骤(4);
(4) 根据map输入文件大小(map_input_bytes)估算reduce数,默认为输入文件的1G估算为1个reduce,根据估算的reduce设置设置此Job的reduce。