Hive get table rows count batch

1710 단어 table
프로젝트 에 서 는 생 성 된 데이터 상황 을 두 가지 방법 으로 계산 하고 두 가지 일 을 해 야 합 니 다. 생 성 된 중간 표 의 줄 수가 같 는 지, 마지막 표 의 데이터 가 일치 하 는 지 비교 해 야 합 니 다.
가 져 오 는 표 의 데 이 터 량 은 selection count (*) from table 을 사용 하여 기다 리 는 결 과 를 얻 는 것 이 귀 찮 기 때문에 bash 셸 을 써 서 이 일 을 했 습 니 다.
그러나 처음에는 이 랬 다.
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 counter.txt
cat counter.txt | sort -n | awk '{print $3;}'
원본 순서에 따라 표 의 줄 수 를 표시 할 수 있다.

좋은 웹페이지 즐겨찾기