在MapReduce模型中,生成中间键值对的阶段是B: mapper。
### 专业分析:
1. **Mapper阶段**:
- 在MapReduce模型中,Mapper是第一个处理阶段。每个Mapper从输入数据集中读取数据,并将其转换为一组中间键值对。这一过程通常被称为“映射(mapping)”。
- 每个输入记录通过Mapper函数处理后,输出一个或多个中间键值对。这些中间键值对是为后续阶段(比如Shuffle和Sort)准备的。
2. **Reducer阶段**:
- Reducer阶段接收来自Mapper阶段的中间键值对,这些键值对已经经过Shuffle和Sort阶段的处理。
- Reducer的任务是对具有相同键的所有中间值进行处理,生成最终的输出结果。Reducer不负责生成中间键值对,而是处理Map阶段生成的中间数据。
3. **Combiner阶段**:
- Combiner是一种可选的优化步骤,通常用于在Mapper输出后立即执行。它的作用是对Mapper产生的中间键值对进行局部汇总,以减少需要传输到Reducer的数据量。
- 虽然Combiner也处理中间键值对,但它并不是生成这些对的阶段。
4. **Partitioner阶段**:
- Partitioner的作用是决定每个中间键值对应该被发送到哪个Reducer。它在Shuffle阶段之前运行,确保相同的键被发送到同一个Reducer。
- Partitioner不生成键值对,而是对Mapper产生的中间键值对进行分区。
综上所述,生成中间键值对的阶段是Mapper阶段,因此正确答案是B: mapper。