首页 > 其他分享 >Dataworks数据同步(个人总结)

Dataworks数据同步(个人总结)

时间:2023-11-10 17:46:19浏览次数:33  
标签:总结 同步 数据源 Dataworks HQL 全量 增量 数据

实习期间的一点总结,做的是MongoDB数据源的同步,遇到了不少坑,遇到不少问题

内容:将指定数据源(如MySQL等数据库)内容增量/全量同步到Dataworks上

1、DDL,建表

需要在开发环境的生产环境建立存放数据的表,分为全量表(无尾缀)和增量表(_delta)

做好字段和表名的备注工作,设计分区字段和生命周期(增量表的生命周期短期,全量表视具体情况)

相关DDL写在一个文件价中,由于只需要执行一次并不需要提交

2、构建增量同步脚本

需要设置过滤条件,以拿到前一天的增量数据,视具体情况设计,比如将表中的创建时间、更新时间或是结束时间等与传参($bizdate等)比较以限定时间

需要注意数据来源和数据去向的设计,传参的设计,依赖关系(一般设置为空间根节点),并发数等

考虑到服务器核数可以设置相关同步串行执行。之后提交、发布到线上

3、构建全量同步脚本

全量的没有过滤条件,且只用跑一次,依赖空间根节点,发布到线上后设置补数据为某天即可将全量的数据导入然后冻结或是下线,之后可通过HQL根据表中具体字段insert overwrite .. partition (date)重新分区等

全量数据一般还是导入到增量表中,后续手动导一遍全量

4、构建HQL,将增量数据合并到全量表中以及数据源的二次处理

合并数据就是join然后insert overwrite,视业务情况LEFT JOIN和FULL JOIN都是常用的

举例:有的数据需要对比历史数据进行增量更新,那么FULL JOIN是常用的

有的log日志在过滤后直接插入到当天分区

二次处理:在处理一些如mongoDB等数据源时往往需要explode,这是在同步到增量表后通过HQL合并到我们的主表当中,也包括对业务情况进行一些过滤处理。

5、查验数据,查看任务依赖关系

查验数据,查的是生产环境的数据

SET odps.sql.allow.fullscan = true;
SELECT  `date`,COUNT(1)
FROM    tableName
GROUP BY `date`;

修改表的生命周期:

ALTER TABLE tableName SET TBLPROPERTIES ('lifecycle' = '36500')

查询表DDL:

show create table tableName; 

依赖关系在运维中心中对相关节点进行下游分析,展开看看就行了

6、补数据

全量数据手动跑一遍,按照首日全量导入的业务时间,插入到主表中。

如果全量脚本是几天前跑的,那么需要对相关的合并HQL进行补数据,将缺的几天数据补上。

标签:总结,同步,数据源,Dataworks,HQL,全量,增量,数据
From: https://www.cnblogs.com/SenX/p/17824650.html

相关文章

  • 第六章学习笔记、知识完整性总结
    目录概述信号和中断Unix/Linux中的信号信号与异常处理与IPC实践概述本章介绍了信号、信号的产生、信号的内容和信号处理;介绍了信号和中断的统一管理,帮助建立对于信号的正确看待方式;信号在Unix/Linux是发挥怎样的作用,如何产生以及处理,PROC中的信号和信号作为进程通信(IPC)机......
  • k8s部署业务服务(详细总结篇)
    1.业务部署说明我们是做算法的,每个算法会被封装成一个镜像,比如:image1(入侵算法),image2(安全带识别算) 结合k8s流程:ingress-nginx(做了hostNetwork:true 网络模式,省去了service的一成转发),直接可以访问ingress-nginx的域名和端口——>客户通过ingress发布的host+path+业务......
  • Cocos Creator动作系统和缓动系统总结
    动作系统就是可以在一定的时间内实现位移、旋转、缩放、跳动等各种动作。需要注意的是,动作系统跟CocosCreator编译器的动画系统不同,动作系统是面向程序员的API接口,而动画系统是通过编译器来设计,它们服务于不同的使用场景,动作系统通常适合做一些简单的位移、旋转等动作,而动画系......
  • python学习总结
    Python是一种流行的高级编程语言,以其简洁的语法和强大的功能而闻名。它广泛应用于各种领域,如数据分析、人工智能、网络开发等。Python的核心特点包括:1.可读性强:Python的语法简洁,代码可读性强,使得程序易于理解和维护。2.易于学习:Python适合编程初学者,因为它具有简单易懂的语法和......
  • 数组&队列&关联数组的总结
    定宽数组:可以直接赋值,也可以先声明再赋值其中还有多维数组intarray2[0:7][0:3];intarray3[8][4];//先个后位intascend[4]='{0,1,2,3};intdescend[5];descend='{4,3,2,1,0};descend[0:2]='{5,6,7};ascend='{4{8}};descend='{9,8,default:-1};数组的声明全在左......
  • man命令总结linux常用基本命令用法以及查看帮助文档的方法
       Linux中的常见命令1查看系统相关信息命令(1)查看内核版本uname-r(2)显示操作系统发行版本cat/etc/os-release(3)查看当前主机名hostname2查看硬件信息(1)查看CPUlscpucat/proc/cpuinfo(2)查看内存大小free-hcat/proc/meminfo(3)查看硬盘分区情况lsblkcat/proc/partiti......
  • SQL知识点总结
    1、直接能看到的放最外一层,若感觉一层查询搞不定就再套一层,把复杂的逻辑放内部。  1、更新:updatetable_namesetparam1=A,param2=Bwhere....  set后面的两个参数用逗号连接。2、插入:insertintotable_namevalues...../insertintotable_name1selectparam1,pa......
  • 总结
    今天建民老师主要分享了如何对需求进行记录,首先一般以后我们出去跑业务的话,多听少说,多记录。在记录的时候尽量不要使用录音和录像设备,这样会使老板们说话时带来顾虑。你就算录音了,老师举了一个例子,开会时间为4个小时,录音时间为4个小时,你已经听了4个小时,那么录音的4个小时由谁来听......
  • 信号类型总结
    信号类型分为两种:变量类型,线网类型四值逻辑:wirereglogicinteger二值逻辑:bitbyteintshortintlonginttimereal有符号:byteintshortintlongint integerreal无符号:wirereglogic bittime无位宽:real默认位宽为1:wirereglogicbit默认位宽为8:byte默认位宽为1......
  • 每日总结11.10
    周报学习内容在本周,我专注于学习javaweb相关知识。我参考了多个教程和文档,通过编写简单的示例程序来加深理解。我学习了Servlet、JSP、JavaBean等基本概念,并了解了如何使用Tomcat作为服务器运行我的javaweb应用程序。工作进展在学习javaweb的过程中,我也进行了一些实践工作......