J'utilise
drop table <table_name>
Si je recrée la table avec le même schéma et le même nom, je récupère les anciennes données. Devrais-je supprimer le répertoire de la table du système de fichiers hdfs pour supprimer complètement les données?
Vous devez changer le tableau externe en interne avant de le déposer:
Exemple
beeline> ALTER TABLE $tablename SET TBLPROPERTIES('EXTERNAL'='False'); // make the table as internal
et alors:
beeline> drop table $tablename; //if you drop the table data will be dropped as well.
Bien que je sois d’accord avec pensz, une légère modification, vous n’avez pas besoin de laisser tomber la table. Il suffit de remplacer le fichier hdfs externe par le nouveau fichier souhaité (la structure du fichier remplacé doit être identique) et lorsque vous effectuez une sélection * du tableau précédent, vous remarquerez qu’il contiendra les nouvelles données et non les anciennes. un.
Les tables externes ne représentent en gros que le schéma des données et l'emplacement du fichier. Vous pouvez ajouter plusieurs fichiers au même emplacement et votre table contiendra automatiquement toutes les données liées à ces fichiers. De même, vous pouvez remplacer toutes les données et votre tableau en tiendra automatiquement compte.
Pas besoin de supprimer le répertoire dans hdfs sauf que vous avez besoin de plus d'espace hdfs.
Si vous voulez remplacer de nouvelles données, il vous suffit de remplacer le fichier dans hdfs.
Si vous voulez utiliser le nom de la table pour une autre utilisation, alors supprimez-la et supprimez le répertoire dans hdfs.
En fait, je pense que c’est une fonctionnalité très pratique qui vous permet de modifier le schéma de votre table (par exemple, vous voulez changer le nom du champ ou concatter deux champs dans un seul champ) sans perdre aucune donnée.
Vous pouvez consulter ce lien, cela pourrait aider
Commencez par obtenir le chemin de la table en utilisant la commande suivante:
Hive> décris le nom de la base de données formaté. Le nom de la table;
Copiez ensuite l'emplacement complet qui apparaît dans la description, par exemple: /User/Hive/warehouse/nom_bdd.db/nom_table
Après cette utilisation, utilisez la commande suivante pour tronquer toutes les données de la table donnée:
***Hive> dfs -rmr /user/Hive/warehouse/database_name.db/table_name;***
OR
***Hive> dfs -rm -r /user/Hive/warehouse/database_name.db/table_name;***
Ensuite, vous pouvez l’effacer complètement à l’aide de la commande DROP TABLE.
En effet, supprimer TABLES EXTERNES ne supprimera pas les données.
Vous pouvez utiliser TRUNCATE TABLE pour vous débarrasser des données.
Doc ici: https://cwiki.Apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-TruncateTable
Puis utilisez DROP TABLE pour supprimer le schéma si nécessaire
s'il s'agit d'une table externe, le fait de la supprimer signifie que vous supprimez simplement le schéma
vous devez donc supprimer manuellement le fichier de HDFS
ou créer une nouvelle table et donner un emplacement de fichier différent dans les propriétés de tbl