概述
由于工作需要,将一些数据库要从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
重定向
重定向分为输入重定向与输出重定向。
所谓的输入重定向即输入不从键盘读入,而是从文件输入或其它。所谓的输出重定向即不输出到终端上,而是输出到文件中去或其它。
""<"表示输入重定向运算符,
">"表示输出重定向运算符。
">>",用">"输出时,如果文件不存在会自动建立一个文件,如果第二次输入时,会覆盖前一次的输入内容,而">>"表示把第二次的输出内容追加到文件中去,而不是覆盖。
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做数据比对所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复