You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改MapReduce的mapper与reducer代码实现查找最长单词及对应长度

MapReduce代码修改方案(从词频统计改为查找最长单词)

修改思路

原有代码逻辑为统计每个单词的出现频次,调整后逻辑如下:

  • Mapper端:拆分文本得到每个单词后,直接输出单词本身和它的字符长度
  • Reducer端:遍历所有Mapper输出的结果,动态记录当前最大单词长度,同时收集所有长度等于最大长度的单词,最后按指定格式输出结果

修改后的Mapper代码

import sys
for line in sys.stdin:
    # 拆分当前行得到所有单词
    for word in line.strip().split():
        # 输出<单词, 单词长度>键值对,用制表符分隔
        print(f"{word}\t{len(word)}")

修改后的Reducer代码

import sys

# 初始化最大长度和最长单词列表
max_length = 0
longest_words = []

for line in sys.stdin:
    line = line.strip()
    if not line:
        continue
    # 拆分得到单词和对应长度
    word, len_str = line.split('\t', 1)
    current_len = int(len_str)
    # 更新最大长度和最长单词列表
    if current_len > max_length:
        max_length = current_len
        longest_words = [word]
    elif current_len == max_length:
        longest_words.append(word)

# 按要求格式输出,如需去重可将longest_words转为set后再拼接
print(f"The longest word has {max_length} characters. The result includes: {', '.join(longest_words)}")

可选优化说明

如果需要对重复出现的最长单词去重,可将输出行的longest_words替换为list(set(longest_words))即可。

内容的提问来源于stack exchange,提问作者CKZ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 22:36:04