MaxCompute数仓维护心得-五叶草

简介: 在维护客户基于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

相关实践学习
简单用户画像分析
本场景主要介绍基于海量日志数据进行简单用户画像分析为背景,如何通过使用DataWorks完成数据采集 、加工数据、配置数据质量监控和数据可视化展现等任务。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
1月前
|
存储 JSON 大数据
大数据离线数仓---金融审批数仓
大数据离线数仓---金融审批数仓
118 1
|
4月前
|
SQL Oracle 物联网
助力工业物联网,工业大数据之数仓维度层DWS层构建【十二】
助力工业物联网,工业大数据之数仓维度层DWS层构建【十二】
45 0
|
4月前
|
SQL 分布式计算 数据可视化
滴滴出行大数据数仓实战
滴滴出行大数据数仓实战
114 0
滴滴出行大数据数仓实战
|
6月前
|
SQL 资源调度 数据库
数仓学习---14、大数据技术之DolphinScheduler
数仓学习---14、大数据技术之DolphinScheduler
|
1月前
|
分布式计算 大数据 Hadoop
数据仓库(13)大数据数仓经典最值得阅读书籍推荐
从事数仓工作,在工作学习过程也看了很多数据仓库方面的数据,此处整理了数仓中经典的,或者值得阅读的书籍,推荐给大家一下,希望能帮助到大家。建议收藏起来,后续有新的书籍清单会更新到这里。
157 2
数据仓库(13)大数据数仓经典最值得阅读书籍推荐
|
2月前
|
SQL 分布式计算 数据库
离线数仓--大数据技术之DolphinScheduler
离线数仓--大数据技术之DolphinScheduler
135 2
|
4月前
|
SQL 存储 分布式计算
助力工业物联网,工业大数据之数仓事实层DWB层构建【十七】
助力工业物联网,工业大数据之数仓事实层DWB层构建【十七】
37 0
助力工业物联网,工业大数据之数仓事实层DWB层构建【十七】
|
4月前
|
存储 数据采集 大数据
大数据必知必会系列——数仓分层架构及三层架构流程[新星计划]
大数据必知必会系列——数仓分层架构及三层架构流程[新星计划]
105 0
|
8月前
|
大数据 关系型数据库 数据处理
传统数仓和大数据数仓的区别是什么?
传统数仓和大数据数仓的区别是什么?
|
8月前
|
消息中间件 大数据 关系型数据库

相关产品

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