
1) 【一句话结论】在计算文本关键词频率时,数据倾斜会导致部分计算节点负载过高(如某关键词集中在一个分区),需通过哈希分区+抽样+并行计算优化,确保任务均衡,提升效率。
2) 【原理/概念讲解】数据倾斜是指海量数据在分布式计算中,因某些分区的数据量或计算复杂度远高于其他分区,导致计算资源不均衡。以关键词频率计算为例,假设文本中“讯飞”一词在A分区出现100万次,其他分区仅1万次,A分区的Map任务会消耗大量时间,而其他分区空闲,整体计算时间由最慢的A分区决定。类比:班级分组做数学题,若某组题目数量远多于其他组(数据倾斜),该组会拖慢全班进度(计算效率低)。
3) 【对比与适用场景】
| 方法 | 定义 | 特性 | 使用场景 | 注意点 |
|---|---|---|---|---|
| 哈希分区 | 按关键字哈希值映射到固定分区 | 数据均匀分布,但倾斜关键词会集中 | 关键词统计、计数 | 需预知关键词分布,否则倾斜严重 |
| 抽样 | 随机抽取部分数据预处理 | 降低倾斜影响,但损失精度 | 大规模数据初步统计 | 抽样比例需合理,避免偏差 |
| 动态分区 | 运行时根据数据分布调整分区 | 自适应,无需预知 | 高动态数据流 | 增加计算开销,需动态调度 |
| 范围分区 | 按数据范围(如时间、数值)分区 | 适合有序数据 | 时间序列分析 | 需数据有序 |
4) 【示例】以MapReduce为例,步骤:
5) 【面试口播版答案】
“面试官您好,针对计算文本关键词频率的数据倾斜问题,核心是部分分区数据量远大于其他分区,导致计算资源不均衡。比如文本中‘讯飞’一词集中在A分区,A分区的Map任务会消耗大量时间,而其他分区空闲,整体计算时间由A分区决定。解决方案方面,首先用哈希分区将数据分散,但需结合抽样:随机抽取1%数据预处理,统计‘讯飞’分布,调整分区权重;其次,动态调整Map任务数,让负载高的分区多分配任务,确保任务均衡。这样就能避免数据倾斜导致的效率问题。”
6) 【追问清单】
7) 【常见坑/雷区】