Примерно так, с помощью оболочки.
#Create external table list for a schema
SCHEMA=your_schema_name
#define filenames
alltableslist=tables_$SCHEMA
exttablelist=ext_tables_$SCHEMA
#Get all tables
hive -S -e " set hive.cli.print.header=false; use $SCHEMA; show tables;" 1> $alltableslist
#For each table check its type:
for table in $(cat $alltableslist)
do
echo Processing table $table ...
#Describe table
describe=$(hive client -S -e "use $SCHEMA; DESCRIBE FORMATTED $table")
#Get type
table_type=$(echo "${describe}" | egrep -o 'Table Type:[^,]+' | cut -f2)
#Check table type, get count and write table name with count
if [ $table_type == EXTERNAL_TABLE ]; then
#get count
cnt=$(hive client -S -e "select count(*) from $SCHEMA.table ")
#save result
echo "$table $cnt" > $exttablelist
fi
done; #tables loop
Просто замените your_schema_name
в начале на имя вашей схемы. Внешние таблицы с подсчетами в этом примере будут сохранены в файле ext_tables_[your_schema_name]
Счет может обрабатываться параллельно и даже в одном операторе SQL, и многие другие вещи могут быть улучшены, но надеюсь, что вы поймали эту идею.