在大数据平台往外推数据时,有的表数据量太大,全量覆盖推送不仅时间久,还会清空目的表,所以这里想了个方法解决.

方案
首先,加一张非分区表,叫table_increment,生成数据时采取增量生成,每次得到的数据为增量生成的数据,overwrite插入到table_increment表中.原先大数据平台中最终表叫table_complete,那么我们再把每次得到的增量数据,从table_increment插入到table_complete中,那么table_complete中的数据,还是全量的数据,我们每次往外抽数据时,只要用table_increment表往外追加抽,就能实现不清空目的表且快速推送.
抽到大数据平台同理.

遇到的小问题
今天在搞一张宽表的时候遇到一个小问题,处理逻辑一样,只是把全量改为增量(只改where语句),但是会出现重复数据的问题(不是所有字段都重复,而是一些业务字段重复),而全量不会.溯源发现了问题的原因.这个宽表的主表数据来自两张表的union all,其中某些数据会同时在两张表内存在,为什么全量跑不会有重复呢,因为全量逻辑内有去重.那么增量逻辑也有去重啊(只改where语句),为什么还会有重复的呢?这原因一般也想不到:这两张表都存在表达同一个信息的一条数据,全量跑时会对所有业务字段重复的数据进行去重,但是这两条数据不是同时插入到表中,所有当某一张表的一条数据比较慢,某一次跑增量逻辑时只有一张表的其中一条数据进来时,自然没有重复的,所以直接插入到全量表中,当另一张表的相同条数据姗姗来迟时,增量部分内也没有重复的数据,所以也插入到全量表,这样全量表内就有了重复数据(业务字段都一样)...所以解决的方法就是在进行插入增量表的时候,还要进行一个判断,根据业务字段判断这条数据在全量表内是否有相同的数据存在,有的话就不插入到增量表中,这样从增量表插入到全量表中的时候,就能保证不会出现数据重复.