其他分享
首页 > 其他分享> > 大数据测试总结

大数据测试总结

作者:互联网

一、大数据测试中的典型问题

1. 数据质量问题和数据处理过程中的问题

我们需要关注数据本身的质量问题,以及数据处理过程中各种处理方式和结果是否满足预期,是否与业务逻辑不相符,是否影响后续业务使用的问题,这些问题通常发生在数据的ETL阶段。

常见的问题如下:

(1)数据记录不唯一

(2)数据流转过程中Null值被自动替换的问题

(3)数据处理过滤条件不正确

(4)处理前后的数据不一致或有部分数据丢失

(5) 处理前后的数据列顺序错误

(6)数据的约束关系不正确

在数据测试过程中,我们通常考虑将一些特定的问题进行规则化配置,应用数据质量平台和自动化脚本进行检测,方便快速发现问题。

当然,规则化配置并不能完全解决上述问题,我们还需要通过CodeReview等手段补充确认,保证底层数据的准确性。

2. 数据SQL问题

SQL测试是大数据测试中不可或缺的环节,在数据收集和数据处理的过程中,涉及较多的SQL任务,我们需要关注SQL语法、应用场景和检索结果等是否正确。

常见的问题如下:

(1)SQL未对异常数据进行处理

如果对空数据的处理不当,那么会导致数据统计结果不正确。

例如,在统计某款App每天的用户登录数量时,直接使用SELECT COUNT(DISTINCT user_id) FROM ***,在这个场景中,忽略了数据表中的usr_id存在空值等异常数据,未对异常数据进行处理,导致统计结果不正确。

在进行SQL测试的过程中,我们要结合真实的数据场景进行确认,查看数据中是否存在非标准的异常数据。

(2)左右连接使用不准确

左连接:首先取出左表中的所有数据,然后加上与条件匹配的右表数据,不匹配的直接给空。

右连接:首先取出右表中的所有数据,然后加上与条件匹配的左表数据,不匹配的直接给空。

在测试过程中,我们需要根据具体的业务逻辑判断左右连接使用是否正确。

(3)数据库索引问题

在数据库中,合理添加索引和正确使用索引能够加快数据库的查询速度。

验证字段索引应用是否合理是对SQL测试时必须进行的一个常规工作。

(4)SQL函数使用不当

在测试过程中,我们需要关注SQL语句中的函数使用是否正确,SQL执行结果是否符合业务逻辑要求。

3. Hadoop应用相关问题

(1)数据倾斜

数据倾斜是指在计算数据的时候,数据的分散度不够,导致大量数据集中到了一台或者几台机器上进行计算,这些数据的计算速度远远低于平均计算速度,导致整个计算过程过慢。

在Spark、Hive应用中,数据倾斜常常发生在GROUP、JOIN等需要数据shuffle的操作中。在这些阶段,需要按照key值进行数据数汇集处理,若key过于集中,那么大部分数据将汇集到相同的机器,从而导致数据倾斜。

数据倾斜不但导致无法充分利用分布式带来的好处,而且可能导致内存消耗过大,超过负载,直接导致任务延迟或失败。

典型的数据倾斜场景如下:

a. 空值产生的数据倾斜

场景:在日志中,经常会出现信息丢失的问题,如日志中的user_id可能存在一定的缺失率。如果取日志中user_id和用户表中的user_id关联,那么会发生数据倾斜问题。

 解决办法1:user_id为空时不参与关联

select * from log a join users b on a.user_id is not null and a.user_id = b.user_id union all 
select * from log a where a.user_id is null;

 解决办法2:赋予空值新的值

select * from log a left outer join users b on case when a.user_id is null then concat('hive', rand()) else a.user_id
end = b.user_id; 

 结论:解决办法2比解决办法1效率更高,因为不但IO少了,而且作业数也少了,在解决办法1中,log读取两次,job数是2,而在解决办法2中,job数是1。

这个优化适合无效id(如-99、'' 和NULL等)产生的数据倾斜问题。我们把空值的key变成一个字符串并拼上随机数,就能把倾斜的数据分到不同的Reducer上,从而解决数据倾斜问题。

b. 不同数据类型关联产生数据倾斜

 

 

标签:总结,数据测试,倾斜,问题,user,SQL,数据,id
来源: https://www.cnblogs.com/kiko-sunrise/p/16535580.html