新闻  |   论坛  |   博客  |   在线研讨会
离线数仓优化简述
天翼云开发者 | 2025-07-24 15:16:14    阅读:7   发布文章

本文分享自天翼云开发者社区《离线数仓优化简述》,作者:徐****东

1、业务层面

    计算量太大是不是必须的,是否可以减少参与计算的用户量或者时间跨度;
    计算逻辑是否过于复杂,是否可以简化。

2、模型层面

    是否有现成的数据可以使用或者基于现成的数据进行加工;
    是否可以将整个计算逻辑进行合理拆分,降低每个子任务的复杂度,同时提高复用的可能性;
    维度退化,空间和时间的权衡。

3、系统层面(遵循一些计算引擎建议的使用规则和参数设置)

    使用Spark3引擎,自动合并小文件;
    输入文件的存储格式、压缩格式、大小;
    输出文件的大小;
    启用压缩;
    分区、分桶;
    拉链表;
    yarn队列的设置;
    合适的计算引擎;
    task的内存设置;
    task处理的数据量;
    task的数量;
    并行度优化;
    调整参数减少Map数量;
    调整参数减少reduce数量。

4、sql、代码层面

    列裁剪,避免select *;
    分区裁剪,使用分区字段过滤;
    条件限制;
    谓词下推;
    map端预聚合;
    大key的过滤;
    打散倾斜key;
    合适的join方式;
    用Distribute By Rand控制分区中数据量;
    group by优化;
    中间结果的缓存和复用;
    小文件优化。

5、任务层面

    减少任务依赖,尽可能缩短链路;
    业务链路/逻辑重构/改写;
    任务分级,任务数评估,错峰调度;
    任务依赖降级,周级别的任务依赖天级别,天级别依赖小时级别,小时级别依赖分钟级别;
    避免频繁创建任务;
    核心任务优先保证产出,双链路机制开启;
    耗时长的任务拆分成子任务。任务批次提交;
    资源动态扩容;
    资源腾挪调整;
    无用任务下线。


*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
天翼云提供云主机、CDN、云电脑、大数据及AI等全线产品和场景化解决方案。
推荐文章
最近访客