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

hive on tez如果是2个大表union会写几次临时文件到hdfs目录,数据量如何计算

如果是2个大表union会写几次临时文件到hdfs目录,数据量如何计算

在Hive on Tez中,两个大表执行UNION操作时,临时文件的写入次数和数据量,取决于UNION的类型(UNION ALL还是UNION去重)以及执行计划的Stage划分。以下分场景详细说明:

一、临时文件写入次数:与Stage数量直接相关

Tez会将UNION操作解析为多个Stage(计算阶段),每个Stage的输出都会写入HDFS临时目录(作为下一个Stage的输入)。因此,临时文件的“写入次数”等价于参与计算的Stage数量

1. 场景1:UNION ALL(不去重,仅合并)

UNION ALL仅需将两个表的结果“直接拼接”,执行计划通常包含3个Stage:

  • Stage 1:扫描并处理第一个表(如过滤、字段转换等,若无需处理则仅扫描),输出结果写入临时目录;
  • Stage 2:扫描并处理第二个表,输出结果写入临时目录;
  • Stage 3:合并Stage 1和Stage 2的临时结果(无需去重),输出最终合并结果到临时目录,最后通过原子操作写入目标表。

临时文件写入次数:3次(每个Stage各写1次)。

2. 场景2:UNION(自动去重,等价于UNION DISTINCT

UNION需要对两个表的合并结果去重,执行计划比UNION ALL多一个“去重Stage”,共4个Stage:

  • Stage 1:处理第一个表,输出临时文件;
  • Stage 2:处理第二个表,输出临时文件;
  • Stage 3:合并Stage 1和Stage 2的结果(此时数据可能有重复),输出到临时目录;
  • Stage 4:对Stage 3的结果执行去重(通常通过Reduce阶段的DISTINCT操作),输出去重后的结果到临时目录,最后写入目标表。

临时文件写入次数:4次(每个Stage各写1次)。

二、临时文件的数据量计算

临时文件的数据量取决于每个Stage的输出数据量,受原始表大小、处理逻辑(如过滤、转换)、数据格式(压缩与否)影响。以下为简化计算(假设无过滤/转换,默认压缩格式如ORC):

1. 场景1:UNION ALL

  • Stage 1临时文件:约等于第一个表的实际存储量(记为A,如100GB);
  • Stage 2临时文件:约等于第二个表的实际存储量(记为B,如200GB);
  • Stage 3临时文件:约等于A + B(合并后无去重,300GB)。

总临时数据量A + B + (A + B) = 2*(A + B)(3次写入的总和)。

2. 场景2:UNION(去重)

  • Stage 1临时文件A
  • Stage 2临时文件B
  • Stage 3临时文件A + B(合并后未去重);
  • Stage 4临时文件:约等于A + B - CC为重复数据量,假设重复50GB,则为250GB)。

总临时数据量A + B + (A + B) + (A + B - C) = 3*(A + B) - C(4次写入的总和)。

三、关键影响因素

  1. 数据压缩:若启用ORC/Parquet等压缩格式,临时文件实际存储量会比原始文本小3-5倍(需按压缩后大小计算);
  2. 处理逻辑:若UNION前有WHERE过滤或字段裁剪,Stage 1/2的输出量会小于原始表大小;
  3. 分桶/分区:若表是分桶或分区表,且UNION仅涉及部分分区,临时文件量会按实际涉及的分区数据计算;
  4. 重复数据比例UNION去重时,重复数据越多(C越大),Stage 4的输出量越小,总临时数据量越少。

总结

  • UNION ALL:3次临时文件写入,总数据量约2*(A + B)
  • UNION(去重):4次临时文件写入,总数据量约3*(A + B) - C
  • 实际数据量需结合压缩、过滤、重复率等因素调整,核心是“每个Stage的输出都会产生临时文件”。
http://www.dtcms.com/a/355084.html

相关文章:

  • hive on tez为什么写表时,要写临时文件到hdfs目录
  • 最长连续序列,leetCode热题100,C++实现
  • 解读 AUTOSAR AP R24-11 Manifest 规范 —— 从部署到安全的全流程支撑
  • 可拖拽指令
  • Xray与XPOC工具对比分析
  • 让企业资产管理高效透明——深度解析固定资产管理系统的功能、优势与价值
  • HBase Compaction HFile 可见性和并发安全性分析
  • Docker-compose离线安装
  • 【Canvas与盾牌】“靡不有初,鲜克有终”黄竖条盾牌
  • [ICCV25]TRACE:用3D高斯直接学习物理参数,让AI“推演”未来场景
  • 微硕WINSOK高性能MOS管WSF80P04,助力充电宝效能与安全升级
  • 在IAR Embedded Workbench for Arm中实现Infineon TRAVEO™ T2G安全调试
  • 舆情监测系统有哪些功能
  • 省市区三级联动选择器-组件
  • C++ 方向 Web 自动化测试实战博客系统思路
  • mac系统本地部署Dify步骤梳理
  • 资产与设备管理数字化转型实践:企业降本增效的新引擎
  • 图书管理系统练习项目源码-前后端分离-【Java版】
  • Linux /proc/pid 探索
  • 【全开源】云贝餐饮V3独立版系统 v1.8.7+API接口开发文档+搭建教程
  • 从 Dockerfile 到 Kubernetes:现代化 PHP 应用配置管理进阶指南
  • 打造旅游实训新场景:旅游管理虚拟仿真实训室的运营与教学落地
  • 旅游管理新阵地:虚拟仿真实训室的功能设计与教学应用
  • Python 实现冒泡排序:从原理到代码
  • java去图片水印的方法
  • Redis 连接数爆炸:连接池配置错误踩坑记录
  • Runway Gen-2 深度技术解析:AI视频生成的范式变革
  • Bscan Bonding Chain
  • 使用llamafactory对模型进行微调
  • 软考-系统架构设计师 决策支持系统(DSS)详细讲解