我制作了一个简单的bash skcript,它应该对指定数据库中每个表中的列进行计数。问题是
`hive -S -e 'use '$database'; describe '$word'' | grep -e '^[a-z]' | uniq |wc -l >>MY_PROJECTS/ColumnCountList.txt`
由于配置单元连接,它会占用大量时间—每次它计算下一个表中的列数时,它都会再次连接到配置单元。
有没有办法连接到配置单元一次,然后只执行命令?它会快得多,特别是当我做1k表数据库它。代码如下:
# !/bin/bash
database=pos
tables_list=`hive -S -e 'use '$database'; show tables' | grep -e '^[a-z]' | uniq`
for word in $tables_list
do
`echo -n "$word : ">>MY_PROJECTS/ColumnCountList.txt`
`hive -S -e 'use '$database'; describe '$word'' | grep -e '^[a-z]' | uniq |wc -l >>MY_PROJECTS/ColumnCountList.txt`
done
2条答案
按热度按时间6ovsh4lw1#
建立一个文件(这里称为
desc_tbl_list.sql
)使用包含descripe命令和表名的bash脚本,如下所示:然后使用包含所有描述命令的hive命令运行脚本,如下所示:
hth公司
mtb9vblg2#
如果您使用mysql作为元存储数据库,这个mysql查询可以给出每个表的计数。如果您想在数据库名称上进行筛选,那么必须将join添加到dbs。