数据清洗真的太重要了
文章目錄
前段时间,为了排查问题,在Hive表里各种查询,最后发现数据清洗真是太重要了,数据不给你清洗好,爬虫采集的再好也是白搭。
我们知道在数据仓库体系中一般有ODS、DWD、DWS 和 ADS 四层。数据清洗的时候,会先把爬虫采集的数据先存到ODS,之后经过处理到DWD,DWS,ADS,这其中每一步出问题都有可能导致数据丢失。一般情况,存入ODS不会出问题,因为这一步没有做什么特别操作,就把数据从HDFS文件写到ODS表中。
清洗容易挖坑的情况是表设计不好,比如ODS里会有来自很多个地方的数据,不给你加上数据来源字段,排查问题就很麻烦。比如不记录数据采集时间,也会造成排查问题麻烦。
更坑的是ODS到DWD,DWD到DWS或者DWS到ADS,因为清洗规则写的太复杂,把数据给清洗丢了,可能丢的不多,但长时间累积就很多了,正常应该保证一条都不丢。
还有一些很细的清洗情况。比如一个数值字段,之前都是正常阿拉伯计数,如1400000,后面突然改成科学计数法,如1.4E6,如果刚开始清洗时没考虑到这个情况,会导致这个字段清洗出错,此时得加一些告警才能发现问题。
还有一些情况是一条记录的发布时间字段,刚开始是有的,后面发布时间字段又变成空了,此时应该保留原来的发布时间。
数据清洗是个精细活,得慢慢来。