记一个sqoop将mysql导入hive数据缺少情况排查

问题描述:
sqoop导入历史数据至hive,落地部分日期数据较mysql数据少几条。
mysql -> sqoop -> hdfs -> ods
问题分析
写了jar 逐天比对mysql对应日期和hive对应日期数据量,count(1) 不同的日期保存下来。
然后拉对应日期的mysql 和 hive数据查出缺少的数据。
我是用navicat 和dbeaver分别将缺少数据日期的mysql数据和hive数据保存成CSV格式。

import pandas as pd
hive_path = r'C:\Users\Administrator\Desktop\hive.csv'
mysql_path = r'C:\Users\Administrator\Desktop\mysql.csv'

hivedata = pd.read_csv(hive_path, index_col=False)
mysqldata = pd.read_csv(mysql_path, index_col=False)

print(hivedata.shape[0])
print(mysqldata.shape[0])
# hive字段一般为小写 主键改成与Mysql相同
hivedata = hivedata.rename(columns={'zd1': 'ZD1'})
res = pd.merge(mysqldata, hivedata, how='left', on=['ZD1'])
# 合并后res.字段.isnull 字段一般选择后面的 可以筛选出两个dataframe 差异数据
print(res[res.dt.isnull()])

然后发现差异数据的日期格式为 20210811000000格式
往回排查导sqoop脚本发现 sql 查询条件 日期条件 date> ‘xxx’ and date <‘xxx’
漏写了=

解决方案
修改sqoop脚本,将缺少日期数据补齐。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值