基于DataX完成数据导入-全量覆盖方案

本文详细探讨了在Hive中建模设计时涉及的数据同步方式(如全量覆盖、新增及更新等)、表类型选择(内部/外部表和分区/分桶表)、存储格式与压缩方案,以及如何根据同步方式使用DataX进行数据导入。重点介绍了SCD模型在维护历史变化中的应用。
摘要由CSDN通过智能技术生成

建模设计: 建模需要考虑的问题

 

1- 数据的同步方式是什么? 
    全量覆盖同步: 
        在建表的时候, 不需要构建分区表, 每一次都是将之前的数据全部删除, 然后全部都重新导入一遍
        适合于: 数据量比较少, 而且不需要维护历史变化行为
    
    仅新增同步:
        在建表的时候, 需要构建分区表, 分区字段是以更新的周期一致即可, 比如 更新的周期为天, 分区字段也应该为天, 每一次导入上一天的新增的数据
        适合于: 数据量比较大, 而且不需要维护历史变化行为(并不代表表不存在变化, 只不过这个变化对分析没有影响)
    
    新增及更新同步:
        处理逻辑: 在建表的时候, 需要构建分区表, 分区字段是以更新的周期一致, 比如 更新的周期为天, 分区字段也应该为天,每一次导入上一天的新增及更新的数据
        适合于: 数据量比较大, 而且需要后期维护历史变化
    
    全量同步:
        在建表的时候, 需要构建分区表, 分区字段以更新的周期一致即可, 比如 更新的周期为天, 分区字段也应该为天,每一次导入的时候, 都是将整个数据集全部导入到一个新的分区中, 后期定期删除老的历史数据(比如: 仅保留最近一周)
        适合于: 数据量比较少, 而且还需要维护历史变化, 同时维度周期不需要特别长
        注意: 此种同步方式相对较少


2- 表是否选择为内部表 还是 外部表?  
    判断的依据: 是否对数据有绝对的控制权, 如果没有 必须是外部表, 如果有 随意
    
    外部表的使用场景: 
        1. 数据非常重要或者不易获得 (购买的数据) 
        2. 多个项目同时引用的数据文件一般做成外部表 例如 (日期表  , 公司组织架构表)
    

3- 表是否为分区表还是分桶表?
    分区表: 分文件夹, 将数据划分到不同的文件夹中, 当查询数据的时候, 通过分区字段获取对应分区下的数据, 从而减少数据扫描量, 提高查询效率(一般存在更新及新增数据的表都会使用分区表 ,根据更新和新增周期进行分区)
    
    分桶表: 分文件 将数据根据指定的字段划分为N多个文件 可以通过这种方式对数据进行采样操作 以及分桶表在后续进行join优化的时候也会涉及到(bucket Map Join | SMB Join)

4- 表选择什么存储格式 和 压缩方案?
    存储格式: 一般都是 ORC / Text File
    压缩格式: 一般都会 SNAPPY / GZ / zlib(默认)
    
    存储格式:  如果数据直接对接的普通文本文件的操作 只能使用textFile 否则大多数都是ORC
    压缩格式:  读多写少 采用SNAPPY   写多读少 采用GZ  如果普通的文本文件对接, 一般不设置压缩
    
    如果空间比较充足, 没有特殊要求, 建议统一采用SNAPPY

5- 表中字段应该如何选择呢?  
    ODS层: 业

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值