Hive modifie le nom de la partition de table externe et renomme le nom du répertoire HDFS pour ne trouver aucune donnée

  • Description du problème:

Une table externe table_1 créée par Hive a une partition stockée par incréments de jours, dt = '2020-04-01'

Nous avons changé le nom de la partition ALTER TABLE via la commande Hive en dt = '2020-03-31', nous voulons également changer le répertoire HDFS correspondant en dt = '2020-03-31'

Mais constaté que les données de la requête sont vides? ? ?

 

 

  • Raison:

Comme il s'agit d'une table externe, les enregistrements de métadonnées et les enregistrements de données de Hive sont gérés séparément, et le stockage réel des données des tables dépend de la gestion HDFS (NameNode).

Ici, nous utilisons ALTER TABLE pour modifier la partition de la table externe, le répertoire dt = '2020-04-01' du lien logiciel HDFS n'a pas changé, et nous pouvons interroger les données normalement.

Lorsque nous renommons le répertoire HDFS et le nom de partition de la table dt = '2020-03-31' pour être cohérent, en fait, lorsque SQL est en cours d'exécution, il recherchera également les métadonnées de Hive (l'enregistrement est toujours dt = '2020-03-31 «Oui),

Mais le dt = '2020-03-31' de cette ruche de liens souples et le dt = '2020-04-01' de HDFS ne sont pas valides et le dt = '2020-04-01' est introuvable. Ainsi, les données ne peuvent pas être interrogées. Lorsque nous utilisons Hive -e pour exécuter, nous verrons également le rapport d'erreur correspondant:

 

 

Par conséquent, afin de permettre à notre partition modifiée de charger correctement les données, nous supprimons la partition d'origine dt = '2020-03-31, créons un nouveau dt =' 2020-03-31, et à l'étape précédente, nous avons Remplacez dt = '2020-04-01' du répertoire HDFS par dt = '2020-03-31'. En raison des caractéristiques de la table externe, nous avons spécifié manuellement le répertoire de la table lors de la création de la table, de sorte que le lien logiciel est configuré comme dive = '2020-03-31 pour Hive et dt =' 2020-03-31 pour HDFS. À l'heure actuelle, le répertoire est cohérent et les données peuvent être interrogées et le problème est résolu.

Je suppose que tu aimes

Origine blog.csdn.net/u012965373/article/details/105538977
conseillé
Classement