Comment puis-je obtenir le nombre de lignes de toutes les tables en utilisant Hive. Je m'intéresse au nom de la base de données, au nom de la table et au nombre de lignes
Vous devrez faire un
select count(*) from table
pour toutes les tables.
Pour automatiser cela, vous pouvez créer un petit script bash et quelques commandes bash.
$Hive -e 'show tables' | tee tables.txt
Ceci stocke toutes les tables de la base de données dans un fichier texte tables.txt
Créez un fichier bash (count_tables.sh) avec le contenu suivant.
while read line
do
echo "$line "
eval "Hive -e 'select count(*) from $line'"
done
Maintenant, lancez les commandes suivantes.
$chmod +x count_tables.sh
$./count_tables.sh < tables.txt > counts.txt
Cela crée un fichier texte (count.txt) avec les comptes de toutes les tables de la base de données.
Un moyen beaucoup plus rapide d'obtenir le nombre approximatif de toutes les lignes d'une table consiste à exécuter explique sur la table. Dans l'une des clauses explicitement, cela indique le nombre de lignes comme ci-dessous:
TableScan [TS_0] (rows=224910 width=78)
L'avantage est que vous ne dépensez pas réellement les ressources du cluster pour obtenir ces informations.
select count(*) from table
Je pense qu'il n'y a pas de moyen plus efficace.
Vous pouvez également définir la base de données dans la même commande et la séparer avec ;
.
Hive -e 'use myDatabase;show tables'
essayez ces gars-là pour automatiser-- mettre dans Shell après cette exécution bash filename.sh
Hive -e 'select count (identifiant de champ distinct) dans table1 où extracttimestamp <' 2018-04-26 ''> sample.out
Hive -e 'select count (identifiant de champ distinct) dans table2 où day = '26' '> sample.out
lc = cat sample.out | uniq | wc -l
if [$ lc -eq 1]; puis écho "PASS" sinon écho "FAIL" fi