ETL优化之道

33 篇文章 0 订阅
6 篇文章 0 订阅

天下武功,唯快不破。

ETL Job优化的目标是执行快,耗费时间更短,总结起来有以下方式:

  1. 增加硬件资源,比如增大内存、CPU等,但优化往往是在资源不足的情况下

  2. 数据缓存,空间换时间

  3. 服务常驻,减少初始化化时间

  4. 减少输入数据量,常用以下技术

    • 数据压缩,缓存中能存放更多数据
    • 索引+BloomFilter,也是空间换时间,加快数据查找速度
    • 列裁剪,原理也是提高了缓存利用率
    • 谓词下推,减少扫描数据,一般要借助预分区或索引相关技术
    • 数据分区分桶
    • 避免重启读取相同数据,比如对同一张表多次查询UNION改写成一次查询+case when
    • 预聚合
  5. 列式存储,在分析场景下顺序读取更多数据,局部性原理,缓存利用率更高;同时数据类型相同压缩效率高,缓存中能存更多数据;其次,也方便建立索引,对数据进行预统计,比如MAX/MIN/是否有NULL等

  6. 向量化执行,利用多核批量处理数据,通常属于框架层面实现

  7. 代码生成,减少虚函数调用,也通常数据框架实现层面

  8. 编码技术,比如有些场景下string编码成int可获取更高执行效率

  9. 物化视图,也即预计算,空间换时间

  10. 自适应算法,一般需要利用一些统计信息进行CBO, 根据不同场景选择合适执行算法,比如Join时根据表大小选择更高效算法

  11. 近似计算, 在特殊场景下平衡计算成本和准确性

以上优化方式基本也是OLAP系统经常采用的技术,因为OLAP系统主要目标就是快。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值