码迷,mamicode.com
首页 > 其他好文 > 详细

Hive get table rows count batch

时间:2015-04-21 08:18:44      阅读:157      评论:0      收藏:0      [点我收藏+]

标签:

项目中需要比对两种方法计算生成的数据情况,需要做两件事情,比对生成的中间表的行数是否相同,比对最后一张表的数据是否一致。

在获取表的数据量是一条一条地使用select count(*) from table来获取等待结果比较烦人,所以就写了一个bash shell来做这件事。

但一开始是这样的:

for line in $(cat tables.txt)
do
	echo "tablename :$line";
	value=$(hive --database databasename --hiveconf v=v1 -S -e "select count(*) from $line;")
	echo "rows count:$value"
done; 
这样只要准备好tables.txt即可。
使用时./count_tables.sh >counter.txt
但后来发现表一多,这样等待还是很漫长。
后来想到可以使用并发进和查询。遂改成如下:
while read line;
do
eval "hive --database databasename -S -e ‘select \"$line" as tablename ,count(*) as rowcount from $line; &"
done;
wait #wait all process to finish calculater

使用时

hive -e ‘show tables‘>tables.txt
./count_tables.sh <tables.txt >counter.txt

Hive get table rows count batch

标签:

原文地址:http://www.cnblogs.com/huaxiaoyao/p/4443273.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!