zoukankan      html  css  js  c++  java
  • Hive get table rows count batch

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

    在获取表的数据量是一条一条地使用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
    但后来发现表一多,这样等待还是很漫长。
    后来想到可以使用并发进和查询。遂改成如下:
    myorder=1
    while
    read line; do eval "hive --database databasename -S -e 'select "$myorder" as myorder, "$line" as tablename ,count(*) as rowcount from $line;' &"
    myorder=$(($myorder+1));
    done; wait #wait all process to finish calculater

    使用时

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

    cat counter.txt | sort -n | awk '{print $3;}'

    即可按照原始的顺序显示出表的行数

  • 相关阅读:
    Android系统根文件系统目录结构
    4面 晶晨半导体 问题总结
    linux 工作队列
    Linux tasklet 的测试
    ArbotiX-M引脚说明
    locobot
    视频地址
    S1雷达ROS包更新指南
    rospy
    mx-28在 labview环境下的开发
  • 原文地址:https://www.cnblogs.com/huaxiaoyao/p/4443273.html
Copyright © 2011-2022 走看看