美文网首页眼君的大数据之路
数据漂移问题与解决

数据漂移问题与解决

作者: 眼君 | 来源:发表于2020-12-16 15:35 被阅读0次

什么是数据漂移

通常我们把从源系统同步进入数仓的第一层数据称为 ODS或者staging层数据,接入层 。
数据漂移是接入层数据的一个顽疾。

数据漂移定义:接入层表同一个业务日期数据中包含前一天或者后一天凌晨附近的数据或者丢失当天的变更数据。

数据漂移出现的原因

一般数仓的接入层都需要存储历史数据,按照一定时间段来切分进行分区存储,一般选择某个时间戳字段进行切分。而这些时间戳字段的准确性是导致数据漂移的根本原因。

通常,时间戳字段分为四类:

  • modified_time:数据库记录某条数据更新的时间。
  • log_time:数据库日志记录某条数据更新的时间。
  • proc_time:具体业务过程发生时间。
  • extract_time:数据记录被抽取时间。

假设接入层将每日接入的数据存储到一个分区:

  • 同一条记录的数据抽取时间extract_time明显是晚于另外三个时间的,如果用这个字段切分,ODS某个分区中的数据会包含前一天末尾的数据,并丢失当天末尾的数据。
  • 如果用数据库记录的更新时间modified_time,前台业务系统手工订正数据时可能会遗忘同步更新该时间,导致该抽取的数据被遗漏掉。
  • 另外,由于网络或者系统压力问题,log_time或者modified_time可能会晚于proc_time,导致数据漂移。
  • 如果我们直接使用proc_time时间进行切分,这种情况仅仅对包含一个业务过程的ODS表有效果,如果该表每条记录需要存储多个业务过程,则用proc_time切分会丢失其他发生在当天的业务过程记录。
    以上就是出现数据漂移的主要原因。

处理数据漂移的方式

常用的方式是将ODS每个时间分区中向前、向后多冗余一些数据,保障数据只会多不会少,具体数据切分时让数仓接入层的下一层按照具体的业务场景用不同的业务时间proc_time来限制。

相关文章

  • 数据漂移问题与解决

    什么是数据漂移 通常我们把从源系统同步进入数仓的第一层数据称为 ODS或者staging层数据,接入层 。数据漂移...

  • 关于数据漂移问题和解决

    数据漂移问题出现的背景 我们通常构建数仓的ODS层时,会考虑按照某个时间戳将数据切分后分区存储。ODS表中常出现的...

  • 数据漂移

    转载链接: https://paxinla.github.io/posts/2020/04/qian-tan-sh...

  • 数据倾斜问题与解决

    长尾问题(数据倾斜) 发生长尾问题的原因 在MapReduce中,Map阶段和Reduce阶段都有可能由多个节点进...

  • io流、泛型、线程

    io流解决的问题:解决设备与设备之间 的数据传输问题。 比如: 硬盘--->内存; 内存-...

  • IO流

    IO流 使用IO流技术读取文件的内容数据。 IO流解决问题: 解决设备与设备之间的数据传输问题。 内存--->硬...

  • 2018-06-26数据结构引入和list列表解析

    算法:关注于解决问题的步骤和解题思路。数据结构:解决一组数据保存形式的问题。 *Python的元组与列表类似,不同...

  • MATLAB|土木工程研发应用

    总结历来解决的问题,在土木工程科研技术领域,MATLAB主要可以解决以下几类问题: 数据统计与图像化 实验数据拟合...

  • 阅读《大数据之路》总结

    数据漂移: 数据漂移出现在数据同步的过程中,特定场景在读写日志文件时,当读文件时,binglog日志缺失或者orc...

  • 解决UICollectionView的cell间距与设置不符问题

    解决UICollectionView的cell间距与设置不符问题 在用UICollectionView展示数据时,...

网友评论

    本文标题:数据漂移问题与解决

    本文链接:https://www.haomeiwen.com/subject/zfongktx.html