数据搬运测试

离线数据搬运工具一般分2种Xdata和Spark
Xdata只是一个导入工具,无逻辑处理
Spark支持数据微处理后再批量导入
下面介绍离线数据清洗后如何搬运到redis或者Hbase中:
1、检查配置
主要配置测试,HDFS数据源路径,数据分隔符需要和建表语句中一致
使用desc可以,查看表结构,使用describe formatted 可以查看表的详细结构,使用show create talbe可以查看建表语句
desc app_table
describe formatted app_table
show create talbe app_table

2、检查映射关系,hive中存储表字段和搬运目的地(Redis,ES,数据库)字段要一一对应

3、批量校验数据准确性以及是否丢失
以数据搬运到Redis为例
数据准确性校验主要是对比HIVE中查询到的数据和落到Redis中数据进行对比
并且要验证数据是否有丢失情况
最开始的想法是写个Python脚本,把HIVE的数据拉出来和Redis中的数据开个接口获取到,2边的数据进行对比校验,但想想一般清洗的是大数据量,做一次对比校验估计要跑一天或者几天的,效率不高,而且维护成本比较高

后面决定随机抽样几千条进行校验,效率可以提升很多,并且让接口测试系统连接HIVE可以进行批量查询,查询时映射成Redis一样的字段名称,再用HIVE查询到的数据批量请求Redis接口,Redis接口数据和HIVE数据进行对比,如果字段都对,则断言成功,否则失败

SELECT
member_system as m_sys,
memberid as mid
FROM app_table order by rand()
LIMIT 200

import json_tools
import json

def jsonDiff(x, y):
result = json_tools.diff(x, y)
return result

#response = res.replace(’\’,’’)
redis_data = json.loads(response)
if len(redis_data) < 1:
result = “false”
message = u’响应结果为空’

data = call.searchKey(info, “dbyf5001”)
hdata = json.loads(data)
arg = json.loads(arg)
arg = arg[“apidocQueryParam”]
arg = arg[“key”]
pmid = arg.split(’_’, 1)[1]
result = “true”
for i in range(len(hdata)):
mid = hdata[i][“mid”]
hive_data = hdata[i]
if mid == pmid:
break
diff = jsonDiff(redis_data, hive_data)
message = diff
for i in range(len(diff)):
if (‘add’ in diff[i]):
continue
else:
result = “false”

4、全量数据+增量数据搬运的话需要考虑上线方案,如果线上数据有问题如何补数据问题
5、数据为空的字段Redis不导入,数据为0的数据会导入Redis,如果要节省Redis空间,清洗数据时需要把为0的数据类型进行转换string为空
6、搬运失败数据处理
导入失败9条处理:把具体错误数据建个临时表,手动导入补数据,最好找下原因,可能redis处理不过来

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值