当前位置: 首页 > article >正文

通过Hive小文件合并(CombineHiveInputFormat)减少80%的Map任务数

一、Hive小文件合并(CombineHiveInputFormat)减少Map任务数

核心问题:小文件过多导致Map任务激增(每个文件至少一个Map),浪费资源且增加NameNode压力

优化策略:
  1. 输入合并(Map前合并)

    • 参数配置

      SQL

      set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat; -- 启用合并输入 set mapred.max.split.size=256000000; -- 单个Map处理的最大数据量(默认256MB) set mapred.min.split.size.per.node=100000000; -- 单个节点最小合并阈值

      通过将多个小文件合并为逻辑块,减少Map数量(例如将100个1MB文件合并为2个Map任务) 
       
  2. 输出合并(任务结束后合并)

    • 参数配置

      SQL

      set hive.merge.mapfiles=true; -- 合并Map输出 set hive.merge.mapredfiles=true; -- 合并Reduce输出 set hive.merge.size.per.task=256000000; -- 目标文件大小 set hive.merge.smallfiles.avgsize=16000000; -- 触发合并的阈值

    • 合并机制
      任务结束后自动启动Map-only作业,将碎片文件合并至目标大小,避免后续任务处理小文件 
       

效果验证

  • 案例:某集群通过合并参数优化,Map任务数从1000+降至200,减少80%资源消耗 
  • 注意事项:合并操作可能增加作业耗时,建议仅在最终结果表启用 


http://www.kler.cn/a/558851.html

相关文章:

  • w803|联盛德|WM IoT SDK2.X测试|window11|VSCODE|(4):IDE配置
  • 解决Open WebU无法显示基于OpenAI API接口的推理内容的问题
  • 【开源项目】分布式文本多语言翻译存储平台
  • 关于Python的一些基础知识(太阳太阳,持续更新)
  • 【DeepSeek-R1】写了个DeepSeek-R1本地软件,欢迎参与测试
  • 使用ESP-IDF来驱动INMP441全向麦克风
  • Redis 如何实现消息队列?
  • Python|OpenCV-实现人物眨眼检测(21)
  • 《从GPT-4到“东数西算”:AI算力的全球格局与技术趋势》
  • 五、Three.js顶点UV坐标、纹理贴图
  • 算法与数据结构(旋转链表)
  • (四)趣学设计模式 之 原型模式!
  • YOLOv12:以注意力为中心的物体检测
  • Servlet 国际化
  • Python pip 缓存清理:全面方法与操作指南
  • 失眠治愈手册(二):问题优化
  • 一文2000字从0到1用Jmeter全流程性能测试实战
  • 为 Power Automate 注册 Adobe PDF Services
  • 深度学习训练camp:第R4周: Pytorch实现:LSTM-火灾温度预测
  • VScode+stfp插件,实现文件远程同步保存【2025实操有效】