zoukankan      html  css  js  c++  java
  • 下篇丨数据融合平台DataPipeline的实际应用场景

    一、对分库分表场景的支持

    1. 场景说明

    在同一个数据任务中,对源系统某张表,根据表中数据的业务逻辑,将数据同步到不同数据库的不同表中,例如:将集团的销售数据按照所属分公司的不同同步到对应的分公司数据库的销售数据表中。


    2. 场景适用说明

    源/目的地:关系型数据库

    读取模式:无限制

    3. 操作步骤


    (1)根据设计确定分库分表规则;


    (2)根据已定规则选择对应数据源并创建数据源;


    (3)目的地将分库分表规则按照指定格式写入CSV文件;


    (4)DP将根据已定义的CSV规则对源端数据进行分库分表写入目的地。

    注:详细细节可联系DataPipeline提供开发文档说明。

    二、自定义数据源场景

    1. 场景说明


    目前,许多企业在数据传输的需求场景中,除了从上游不同业务数据库中实时、定时分配到下游系统外,还需从外部合作商、供应商中获取业务数据。此时,企业通常会根据需要编写不同的脚本,手动调用第三方系统提供的API接口,在抓取数据后,自行编写清洗逻辑,最后实现数据落地。DataPipeline的自定义数据源功能针对上面场景有以下几点优势:


    1. 统一管理数据获取逻辑,快速合并JAR减少脚本开发量;  2. 当上游发生变化时,无需对每一个数据传输任务进行调整; 3. 可结合DataPipeline的数据解析功能、清洗工具和目标初始化功能减少整体开发量,并提供监控和预警。


    2. 场景适用说明

    源:自定义数据源

    目的地:无限制

    读取模式:定时模式

    3. 操作步骤

     

    (1)创建自定义数据源,并上传JAR包(或调取已上传过的JAR包);
    (2)选择数据存放的目的地;
    (3)使用清洗工具完成数据解析逻辑;
    (4)配置目的地表结构,即可完成所有配置。


    注:详情参考「自定义」数据源,解决复杂请求逻辑外部数据获取难题

    三、MySQL源Slave1挂掉后,使用Slave2同步如何保证数据不丢失

    1. 场景说明

    为避免对MySQL主库产生影响,DataPipeline连接MySQL Slave1从库通过解析Binlog方式进行实时同步。但当Slave1挂掉时,为不影响任务,需要切换到Slave2从库继续进行实时同步。

    但Slave2拿到的Binlog日志相较于Slave1有延迟,会导致缺失数据。DataPipeline提供了回滚功能,用户可在DataPipeline上将原任务回滚到到某个时间段,确保不会缺失数据,拿到对应GTID,再通过该GTID找到Slave2对应的Binlog position等信息。该操作不会缺失数据,但可能会产生重复数据(如果目的地是关系型数据库且有主键,可根据主键去重)。

    2. 场景适用说明

    源/目的地:MySQL/关系型数据库

    读取模式:实时模式


    3. 操作步骤


    (1)创建数据源(Slave1,开启Binlog同步所需条件);


    (2)正常激活任务即可;

    (3)假如该任务挂掉,回滚操作,拿到某个时间点的GTID值;

    (4)新建另一个数据源(Slave2,开启Binlog同步所需条件);

    (5)激活起点选择自定义(填写Slave1,回滚时所拿到的GTID,并根据该GTID在Slave2上拿到Binlog position等信息)。

     

    四、多个表同步到一个Kafka Topic

    1. 场景说明

    因为业务需求,需要将多个表同步到Kafka Topic中,以便将数据供下游使用。在DataPipeline中可以实现该场景,同时也存在一些注意事项。

    2. 场景适用说明

    源/目的地:无限制/Kafka

    读取模式:无限制(建议使用实时或增量识别字段模式,因为Kafka目的地数据无法去重)


    3. 操作步骤


    (1)若使用不到DataPipeline的高级清洗功能,可联系DataPipeline运维开启一个全局参数,这样可以在一个任务中选择多张表写入到同一个Kafka目的地。如果是实时模式,在该参数下,每条数据将额外附加上DML、 Insert timestamp 等字段信息,以供下游使用;


    (2)如果需要使用DataPipeline高级清洗功能,则需要将这些表分布在不同任务中,写入到同一个Kafka Topic。

    五、将多个表同步到一个表

    1. 场景说明

    因为业务需求,需要将多个表同步到一个目的地表。在DataPipeline中可以实现,但需要注意一些事项。


    2. 场景适用说明

    源/目的地:无限制

    读取模式:无限制


    3. 操作步骤


    (1)2.6.0以前版本需要开启高级清洗,并在高级清洗中对所添加字段赋默认值;


    (2)2.6.0以后版本不需要开启高级清洗,需要在写入设置中添加字段,并将蓝色按钮关闭(同步字段,但不同步数据);


    (3)要求目的地在DataPipeline上的表结构必须一致,如字段缺少需对应添加。并且,需要建多个任务,将源表分布在不同任务中。

    六、如何将图片同步到HDFS

    1. 场景说明


    需要将各个区域的图片统一上传到HDFS上保存,供后续计算等使用。

    2. 场景适用说明

    源/目的地:FTP/HDFS

    读取模式:定时模式

    3. 操作步骤


    (1)点击文件同步;

    (2)正常创建任务即可。

    本篇集中介绍了6种场景,如果你在工作中遇到了同样的问题,欢迎与我们交流。

  • 相关阅读:
    在程序中向水晶报表传参数,以及在程序中指定报表源
    运行Web程序时提示无法使用调试
    TreeView控件节点重命名后没有进入beginEdit的解决方案
    网络负载平衡(转)
    纵横表转交叉表
    重绘datagrid,包括强迫显示某行
    datagrid添加事件
    我的页面模板算法
    C++函数重载
    关于string.empty 与 "" 内存分配
  • 原文地址:https://www.cnblogs.com/DataPipeline2018/p/12144140.html
Copyright © 2011-2022 走看看