文章 查看内容

ETL中间结果缓存逻辑说明

ETL中间结果缓存逻辑说明

9 0 智能ETL 2026-4-27 18:58 发布者: 观小豪

ETL中间结果缓存,这个与ETL任务实际运行的关系,它的计算逻辑是什么,以及它的阈值调整可能会带来的影响...
一、ETL中间结果缓存作用
ETL 中间结果缓存是当 ETL 相对较复杂时(至少包含两个输出数据集且超过设置的复杂度阈值),通过启用该配置,系统会自动将中间运算结果进行缓存以加速整个 ETL 的运行效率。

二、ETL中间结果缓存阈值计算逻辑

如下图情况

1)第一列的input节点,因为它本身是没有计算逻辑的,所以input1和input2计算复杂度为1

2)第二列的Operator节点,因为它有了计算逻辑,但是因为前面的input节点没有,所以Operator1和Operator2计算复杂度只是在input的计算复杂度之上再加1,即为2

3)第三列的Operator节点,因为它本身有计算逻辑,所以复杂度为1,又因为前面有两个有计算逻辑的复杂度为2的节点,所以Operator3即是前面两个节点之和加上它本身的复杂度,即2+2+1=5

4)第四列的Operator节点,因为它本身有计算逻辑,所以复杂度为1,又因为前面有一个有计算逻辑的复杂度为5的节点,所以Operator4即是前面一个节点复杂度加上它本身的复杂度之和,即5+1=6

5)第五列的Operator节点,Operator5,Operator6,Operator7都是因为其本身有计算逻辑,所以复杂度为1,又因为前面有一个有计算逻辑的复杂度为6的节点,所以Operator5,Operator6,Operator7即是前面一个节点复杂度加上它本身的复杂度之和,即6+1=7;

Output2因为其后面没有计算节点了,因为它本身有计算逻辑,所以复杂度为1,又因为前面有一个有计算逻辑的复杂度为6的节点,所以Output2即是前面一个节点复杂度加上它本身的复杂度之和,即6+1=7,且终止在7

6)第六列的Operator节点,因为它本身有计算逻辑,所以复杂度为1,又因为前面有3个有计算逻辑的复杂度为7的节点,所以Operator8即是前面3个节点复杂度加上它本身的复杂度之和,即7+7+7+1=22

7)第七列的Output节点,因为它本身有计算逻辑,所以复杂度为1,又因为前面有一个有计算逻辑的复杂度为22的节点,所以Output1即是前面一个节点复杂度加上它本身的复杂度之和,即22+1=23

所以总复杂度,即Output1和Output2计算复杂度之和,即23+3=30

三、ETL中间结果缓存阈值调整可能会带来的影响
1、提高阈值的影响
1.1)如果把 100 提高到 150 或 200,可能带来的影响:
原来会拆分的部分 ETL,可能不再拆分;
中间缓存次数会变少;
磁盘/临时表落地可能减少;
但单次 Spark 任务会更重,单链路内存、shuffle、计算压力更集中;
对复杂 ETL 来说,可能更容易出现长尾、超时、OOM、stage failure;
1.2)例子:
一个 ETL 有多路关联、聚合、输出,系统评估复杂度是 120。
阈值是 100:120 > 100,系统会拆分,先把一部分结果缓存下来,再继续后面的计算
阈值提高到 150:120 <= 150,系统不拆分了,整条链一次跑完
1.3)这时可能出现两种结果:
如果这个 ETL 其实不大,取消拆分后反而更快,因为少了中间落盘
如果这个 ETL 很吃资源,取消拆分后可能更容易把 driver / executor 压爆,报 Job aborted due to stage failure、超时或内存错误
2、降低阈值的影响
2.1)如果把 100 降到 80 或 60,可能带来的影响:
更多 ETL 会被拆分;
中间缓存次数会增加;
单次 Spark 任务压力会变小;
某些复杂 ETL 会更稳定;
但整体执行链路可能变长,落盘变多,IO 增加,反而可能变慢;
2.2)例子:
还是上面那个复杂度 120 的 ETL。
阈值是 100:会拆分
阈值降到 60:会拆得更多,甚至多段拆分
2.3)这时常见结果是:
好处:每一段更轻,复杂 join/聚合不容易一次性把资源吃满
代价:每段之间要写中间结果,可能增加存储占用、临时文件、整体时长
3、总结
3.1)提高阈值:偏性能,少拆分,但风险是重任务更重
3.2)降低阈值:偏稳定,易拆分,但代价是中间缓存更多、可能更慢

四、参考文档
1)ETL 中间结果缓存:https://docs.guandata.com/product/bi/etl-advanced-setting#ETL-%E4%B8%AD%E9%97%B4%E7%BB%93%E6%9E%9C%E7%BC%93%E5%AD%98

路过

雷人

握手

鲜花

鸡蛋

评论

您需要登录后才可以发表言论 登录立即注册
微信服务号
联系我们
电话:400-880-0750
邮箱:hello@guandata.com
Copyright © 2001-2026 观远社区 版权所有 All Rights Reserved. 浙 ICP 备15006424号-3
去评论 去发文 返回顶部
返回顶部