MaxCompute数仓维护心得-五叶草

本文涉及的产品
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 在维护客户基于MaxCompute搭建的数据仓库时,我们遇到过一些问题,踩过一些坑,同时积累了一些经验,也初步形成了一套操作流程规范,在这里与大家以Tip的形式与大家分享一下。 Tip1.避免同步视图 同步的源数据要避免使用视图,在客户的生产环境上曾经出现过这样的情况:由于生成视图的存储过程优化不好,同步视图在同步任务发起请求后很久没有生成出来,导致同步任务及后续的ETL挂起达数小时之久,所以后续和数据提供方接洽,将数据源从视图换为表,保证在同步之前同步表里的内容已经更新。

在维护客户基于MaxCompute搭建的数据仓库时,我们遇到过一些问题,踩过一些坑,同时积累了一些经验,也初步形成了一套操作流程规范,在这里与大家以Tip的形式与大家分享一下。


Tip1.避免同步视图


同步的源数据要避免使用视图,在客户的生产环境上曾经出现过这样的情况:由于生成视图的存储过程优化不好,同步视图在同步任务发起请求后很久没有生成出来,导致同步任务及后续的ETL挂起达数小时之久,所以后续和数据提供方接洽,将数据源从视图换为表,保证在同步之前同步表里的内容已经更新。


在测试环境下,通过修改数据集成中的同步任务实现数据源从视图切换成表。再确认不同的数据源的表数据结构完全一致之后,修改如下同步脚本中的table值为新的表名。

100562c002dda61b4073106b2d80cde29a3463fc

由于在同步脚本里truncate字段为true,所以再次同步数据时该分区内的旧数据会被擦除,在修改之后可以直接通过补数据节点得到新数据源里的数据,同时该节点之后的节点也需要重跑,确保所有任务数据的正确性、一致性。


核对数据也是保证修改前后数据正确性、一致性的办法之一。核对主要是与数据提供方核对数据。这里以验证销量数据为例,双方核对的标准如下

客户编码Code

客户姓名Name

年月

BILL_DATE

数据行数

销售数量PROD_QUANTITY

销售金额

PROD_AMOUNT

 

 

 

 

如果连续一周与数据提供方的数据一致,那么可以认为数据源修改成功

 

Tip2.Maxcompute数据同步到AnalyticDB

AnalyticDB常常作为MaxCompute与QuickBI之前的数据加速层,那么MaxCompute到AnalyticDB的数据同步就是必须的。按照通常的数据集成操作来配置,我们可以建立一个数据同步任务,但是当我们尝试运行这个同步任务时就会发现任务运行失败。


0f7a4eb1855a9d96bc21e0a3aa6859813b463962

起初在授权策略、网络方面查错,但是依旧没有解决问题。最终了解到MaxCompute到AnalyticDB的数据同步必须进行下面的操作:


由于使用的公有云,要将 garuda_build@aliyun.comgaruda_data@aliyun.com两个公用云账号添加到MaxCompute的工程中:


ADD USER ALIYUN$garuda_build@aliyun.com;
ADD USER ALIYUN$ garuda_data@aliyun.com


在添加账号之后需要将Describe,Select权限赋给这两个账号:


GRANT Describe,Select ON TABLE rpt_outlet_report_daily_april  TO USER ALIYUN$garuda_build@aliyun.com;
GRANT Describe,Select ON TABLE rpt_outlet_report_daily_april  TO USER ALIYUN$garuda_data@aliyun.com;


之后再运行这个同步任务,发现同步成功!


Tip3.数据删除

数据提供方对上个月的历史数据进行了修改,删除了部分不符合业务逻辑的数据,为保证数据一致性,我们也需要将这部分历史数据删除。由于数据同步是增量的,每天只同步变更日期大于{bdp.system.bizdate}的数据,并用这部分数据替换掉全量数据里的旧数据。数据更新的示例代码如下,其中dwd_dummy_data为全量基础表,存放全量数据;ods_dummy_data为增量同步表,存放今天的增量数据,ds为分区列

3788b365a72d74b45551290a663bc9af6c589813


由于数据提供方已经没有不符合业务逻辑的数据,那么每日的同步数据一定是符合业务逻辑的,所以并不用做数据删除。那么需要删除的数据就在全量数据中,即示例中的dwd_dummy_data表中。从示例代码可以看出数据更新只使用到分区为两天前的全量数据,所以更新所有分区的的全量数据是没有必要的,但是同时也说明了数据删除操作必须在数据更新任务触发时间前完成,否则完成删除操作的数据全量数据并不会用于新一轮的数据更新。

在明确了这些注意点之后,我们在测试环境中对要进行操作的分区的数据进行备份,方便回滚。由于MaxCompute没有update操作,我们通过insert overwrite来实现数据的删除,下面以删除dwd_dummy_data表中col3小于1000的数据为例,实现的逻辑如下

ee5668f9b141989fc18624457d91236fd4a07cc6

注意在where中限定分区列ds,否则将会插入所有分区中符合条件的数据,产生重复数据。

同样的,数据删除之后也需要和数据提供方核对数据。一旦数据差异较大时,且问题无法短时定位时要及时回滚数据,即将备份的数据重新插入到操作的分区,同时保留操作时的脚本,用于和数据提供方核查数据删除逻辑。当确定没有修改ETL脚本时,重跑对应业务日期的任务也可以实现数据回滚。

在确定删除逻辑正确,数据可以核对上之后,就可以对生产环境上的数据进行操作。操作时需要通知客户操作的开始时间、预计的操作时长、操作的表、操作的逻辑,如果可能造成影响比较大,也要将可能的影响告知客户。在客户邮件同意之后方可进行操作。同样的,在测试环境操作时的一切准则在生产环境同样要遵守,在连续数据核对一周之后,如果数据没有差异那么操作完成,相关的操作、操作日期、操作人员需要记录下来。

 

 

Tip4.ETL脚本修改

ETL脚本修改的准则与数据删除进本类似,但要记得将修改前的脚本备份。另外,对脚本尽量小的改动。举例来说,比如要A字段的值由其他字段依据某些逻辑生成,后面改动时需要将A字段为特定值的数据过滤掉,我们可以选择在生成逻辑里面进行修改,但是这样可能对原来的逻辑产生影响,于是可以在不显著影响执行效率的情况下,考虑再加一层select查询,同时用where限定条件过滤掉数据。

修改完成之后,在脚本的头部注释上添加Modify信息,例如下图:

75668d5295855291b7c7dd8430664a7c1a850234

文章来源-五叶草


阿里巴巴大数据-玩家社区 https://yq.aliyun.com/teams/6/

---阿里大数据博文,问答,社群,实践,有朋自远方来,不亦说乎……

bba01b493e1c5d904e882b1c380673c6ebe49a98

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
4月前
|
数据采集 大数据
大数据实战项目之电商数仓(二)
大数据实战项目之电商数仓(二)
106 0
|
4月前
|
SQL 分布式计算 关系型数据库
实时数仓 Hologres产品使用合集之湖仓加速版查询maxcompute外部表,有什么优化途径吗
实时数仓Hologres的基本概念和特点:1.一站式实时数仓引擎:Hologres集成了数据仓库、在线分析处理(OLAP)和在线服务(Serving)能力于一体,适合实时数据分析和决策支持场景。2.兼容PostgreSQL协议:Hologres支持标准SQL(兼容PostgreSQL协议和语法),使得迁移和集成变得简单。3.海量数据处理能力:能够处理PB级数据的多维分析和即席查询,支持高并发低延迟查询。4.实时性:支持数据的实时写入、实时更新和实时分析,满足对数据新鲜度要求高的业务场景。5.与大数据生态集成:与MaxCompute、Flink、DataWorks等阿里云产品深度融合,提供离在线
|
3月前
|
数据采集 运维 Cloud Native
Flink+Paimon在阿里云大数据云原生运维数仓的实践
构建实时云原生运维数仓以提升大数据集群的运维能力,采用 Flink+Paimon 方案,解决资源审计、拓扑及趋势分析需求。
18490 54
Flink+Paimon在阿里云大数据云原生运维数仓的实践
|
5月前
|
存储 SQL 分布式计算
闲侃数仓优化-大数据治理和优化
闲侃数仓优化-大数据治理和优化
64 0
|
2月前
|
消息中间件 存储 大数据
大数据-数据仓库-实时数仓架构分析
大数据-数据仓库-实时数仓架构分析
114 1
|
2月前
|
存储 运维 Cloud Native
"Flink+Paimon:阿里云大数据云原生运维数仓的创新实践,引领实时数据处理新纪元"
【8月更文挑战第2天】Flink+Paimon在阿里云大数据云原生运维数仓的实践
258 3
|
2月前
|
分布式计算 关系型数据库 Serverless
实时数仓 Hologres产品使用合集之如何将ODPS视图表数据导入到Hologres内表
实时数仓Hologres是阿里云推出的一款高性能、实时分析的数据库服务,专为大数据分析和复杂查询场景设计。使用Hologres,企业能够打破传统数据仓库的延迟瓶颈,实现数据到决策的无缝衔接,加速业务创新和响应速度。以下是Hologres产品的一些典型使用场景合集。
|
2月前
|
存储 分布式计算 关系型数据库
实时数仓 Hologres产品使用合集之创建外部表时提示不支持ODPS的datetime数据类型,该怎么解决
实时数仓Hologres是阿里云推出的一款高性能、实时分析的数据库服务,专为大数据分析和复杂查询场景设计。使用Hologres,企业能够打破传统数据仓库的延迟瓶颈,实现数据到决策的无缝衔接,加速业务创新和响应速度。以下是Hologres产品的一些典型使用场景合集。
|
5月前
|
存储 数据采集 算法
大数据平台治理——运营的角度看数仓
大数据平台治理——运营的角度看数仓
46 0
|
5月前
|
存储 数据挖掘 大数据
大数据数仓建模基础理论【维度表、事实表、数仓分层及示例】
数据仓库建模是组织和设计数据以支持数据分析的过程,包括ER模型和维度建模。ER模型通过实体和关系描述数据结构,遵循三范式减少冗余。维度建模,特别是Kimball方法,用于数据仓库设计,便于分析和报告。事实表存储业务度量,如销售数据,分为累积、快照、事务和周期性快照类型。维度表提供描述性信息,如时间、产品、地点和客户详情。数仓通常分层为ODS(源数据)、DWD(明细数据)、DIM(公共维度)、DWS(数据汇总)和ADS(应用数据),以优化数据管理、质量、查询性能和适应性。

相关产品

  • 云原生大数据计算服务 MaxCompute