Hive表保存数据到Excel做数据比对

由于工作需要,将一些数据库要从hive中迁移到clickhouse中,迁移完成后需要核对数据。

在此记录将hive中和clickhouse中两张表做数据对比时遇到的一些问题。

1.hive 保存数据

hive保存数据用的是linux下的重定向。新建一个hive查询,通过>重定向到文件

hive -e "select dt, count(*), sum(realcost) from tablename where dt>='2018-01-01' and dt <'2019-01-01'group by dt" > hivedata2018

重定向

重定向分为输入重定向与输出重定向。

所谓的输入重定向即输入不从键盘读入,而是从文件输入或其它。

所谓的输出重定向即不输出到终端上,而是输出到文件中去或其它。

""<"表示输入重定向运算符,
">"表示输出重定向运算符。

"<<"这种输入告诉Shell,当前标准输入来自命令行的一对分隔号的中间内容。
">>",用">"输出时,如果文件不存在会自动建立一个文件,如果第二次输入时,会覆盖前一次的输入内容,而">>"表示把第二次的输出内容追加到文件中去,而不是覆盖。

2.调整数据的编码

重定向后保存的文件默认是utf-8编码的。而Excel中一般采用GBK编码,所以要将输出的文件重编码一次。这里是将utf-8编码的文件rawdata重编码为GBK编码格式的的文件data

iconv -f UTF-8 -c -t GBK rawata >data

iconv的用法:
用法: iconv [选项...] [文件...]
Convert encoding of given files from one encoding to another.
输入/输出格式规范:
  -f, --from-code=NAME       原始文本编码
  -t, --to-code=NAME         输出编码
信息:
  -l, --list                 列举所有已知的字符集
输出控制:
  -c                         从输出中忽略无效的字符
  -o, --output=FILE          输出文件
  -s, --silent               suppress warnings
      --verbose              打印进度信息
  -?, --help                 给出该系统求助列表
      --usage                给出简要的用法信息

  -V, --version              打印程序版本号

3. 对比数据的技巧

由于数据量巨大,一条一条核对不现实。一次性跑过大的数据集又会取数时间过长。采用的方法是:

1.以天为粒度,用dt 去group by 然后 count(*)去统计每天的总的数据条数。先核对数据量一致性

2.然后用sum(colname)去统计一些关键指标当天的总和。不需要去核对每条数据,只需要核对整体结果。

3.以年为单位输出一整年的每天的数据,用Excel做文本对比。这样可以在对比第一年的同时,拉去第二年的数据。

4. Excel文件对比技巧

参见 https://jingyan.baidu.com/article/2fb0ba408c291100f2ec5f36.html




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值