推广项目新架构新增清洗历史数据

Posted xx0829

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了推广项目新架构新增清洗历史数据相关的知识,希望对你有一定的参考价值。

1、背景:

      数据在使用的过程中会慢慢衰减,原因是数据使用频繁会被冻结一段时间和其他一些造成数据某个时间点不可用的未知因素,基于这中现象有必要设计清洗历史数据。我们当前原始清洗过程只是负责获取基本信息,因为历史数据的清洗会出现获取基本信息后不能做任务,所以我的设计将清洗历史数据分成初次清洗和二次清洗两个阶段。初次清洗是获取基本信息,二次清洗是再从中提取出可以做任务的数据。

2、设计逻辑:

  历史数据按每个月分三部分备份,例如:his_clean_t2018111,his_clean_t2018112,his_clean_t2018113

       历史数据初次清洗是将每部分历史数据数据按照关键字段去重后存储到old_clean_t,工程xx-ck-clean分发数据到工程xx-rbt-clean获取初次清洗结果后存储到临时表old_short_succ_t,临时表old_short_error_t,为了保证数据不重复分发将已经分发的数据存储到临时表old_short_run_t,最后将基本信息持久化到表old_used_t。

       历史数据二次清洗是将表old_used_t的数据插入到表old_used_task_t,如果已经存在的有效数据是不需要二次清洗的,所以二次清洗前需要将表old_used_task_t存在已经有效的数据删除过滤。工程xx-ck-task分发数据到工程xx-rbt-task获取二次清洗有效的数据uuid存到到Redis,最后将Redis的uuid关联到表提取出二次清洗的有效数据存储到最终做任务的表cookie_used_t。

3、设计项目:

分发初次清洗数据:xx-ck-clean;

初次清洗:xx-rbt-clean;

分发二次清洗数据:xx-ck-task;

二次清洗:xx-rbt-task

4、数据维护SQL:

-- 自动长度过长修改内容
UPDATE his_clean_t2018113 SET ua=‘HUAWEI-ARS-TL00__weibo__7.3.0__android__android8.1.0‘
WHERE LENGTH(ua)>200;
-- 插入数据初次清洗
SET@uuid=2018111010000000000;
INSERT INTO old_clean_t(`uuid`,`cki`,`cks`,`ckua`,`ckaid`,`ckuid`,`ckfrom`,`ckgsid`)
SELECT @uuid:=@uuid+1 uuid,i,s,ua,aid,uid,`from`,`gsid` FROM his_clean_t2018111 GROUP BY gsid;
SET@uuid=2018112010000000000;
INSERT INTO old_clean_t(`uuid`,`cki`,`cks`,`ckua`,`ckaid`,`ckuid`,`ckfrom`,`ckgsid`)
SELECT @uuid:=@uuid+1 uuid,i,s,ua,aid,uid,`from`,`gsid` FROM his_clean_t2018112 GROUP BY gsid;

-- 查询
SELECT COUNT(1) FROM old_clean_t;
SELECT COUNT(1) FROM old_clean_t WHERE state=0;
SELECT COUNT(1) FROM old_clean_t WHERE state=1;
SELECT COUNT(1) FROM old_clean_t WHERE state=2;
SELECT COUNT(1) FROM old_short_run_t;
SELECT COUNT(1) FROM old_short_error_t;
SELECT COUNT(1) FROM old_short_succ_t;
SELECT COUNT(1) FROM old_used_t;
SELECT COUNT(1) FROM old_used_task_t;
-- 清理
DELETE FROM old_clean_t;
DELETE FROM old_used_task_t;

-- 插入数据二次清洗
INSERT INTO old_used_task_t(uuid,cki,cks,ckua,ckaid,ckuid,ckfrom,ckgsid,cuid,clevel,cvip,cnv,cfollower,cfriend,carticle,cheader)
SELECT uuid,cki,cks,ckua,ckaid,ckuid,ckfrom,ckgsid,cuid,clevel,cvip,cnv,cfollower,cfriend,carticle,cheader FROM old_used_t;
-- 删除二次清洗中已经有效的(已经有效的数据不用二次清洗)
DELETE outt FROM old_used_task_t outt INNER JOIN cookie_used_t cut ON outt.cuid=cut.cuid;
-- 二次清洗后的有效数据存放再redis,执行程序插入数据到cookie_used_t

以上是关于推广项目新架构新增清洗历史数据的主要内容,如果未能解决你的问题,请参考以下文章

每日生产万亿消息数据入库,腾讯如何突破大数据分析架构瓶颈

大数据项目4(数据清洗与集成)

yapi平台基本使用介绍

Spark-ETL日志数据清洗分析项目(上)--个人学习解析(保姆级)

Hadoop学习笔记—20.网站日志分析项目案例数据清洗

.NET 大数据实时计算--学习笔记