我是靠谱客的博主 优秀自行车,最近开发中收集的这篇文章主要介绍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




最后

以上就是优秀自行车为你收集整理的Hive表保存数据到Excel做数据比对的全部内容,希望文章能够帮你解决Hive表保存数据到Excel做数据比对所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(40)

评论列表共有 0 条评论

立即
投稿
返回
顶部