web-dev-qa-db-fra.com

Comment trouver un nom de colonne particulier dans toutes les tables de Hive.?

Comment trouver un nom de colonne particulier dans toutes les tables de Hive?

J'ai exécuté cette requête dans Hive: select table_name,column_name from retail.columns where column_name like '%emp%'; ( retail est une base de données).

Mais c'est donner:

erreur FAILED: SemanticException Line 0: -1 Table non trouvée 'colonnes'

J'ai essayé la requête: select distinct table_name from default.columns where column_name = 'emp' ( default est la base de données de la mine). Mais c'est aussi donner une erreur.

J'ai cherché sur ceux-ci, j'ai eu quelle requête j'ai écrit c'est pour les bases de données SQL.

Mais je veux chercher dans la base de données Hive? Comment entrer en ruche?

La même question a déjà été posée, mais j'estime que les choses pourraient avoir changé et qu'il pourrait y avoir une solution directe:

Comment pouvez-vous rechercher toutes les tables avec un nom de colonne donné et retourner quelles tables ont ce nom de colonne dans Hadoop/Hive?

Recherche de tables et de colonnes dans Hive

3
Mohit.kc

ci-dessous le script shell vous donnera le résultat souhaité:

Hive -S -e 'show databases'|
while read database
do
   eval "Hive -S -e 'show tables in $database'"|
   while read line
   do
if eval "Hive -S -e 'describe $database.$line'"| grep -q "<column_name"; then
  output="Required table name: $database.$line"'\n';
else
output=""'\n';

fi
echo -e "$output"
 done
done
2
Abhishek Anand

Voici la requête que vous pouvez utiliser sur le métastore:

sélectionnez TBL_NAME, COLUMN_NAME, TYPE_NAME dans TBLS et rejoignez COLUMNS_V2 sur CD_ID = TBL_ID où COLUMN_NAME ressemble à 'colonne';

où 'colonne' est le nom de la colonne que vous recherchez. 

0
hduser