web-dev-qa-db-fra.com

Ajouter une partition après avoir créé une table dans la ruche

j'ai créé une table non partitionnée et chargé des données dans la table, maintenant je veux ajouter un PARTITION en fonction du département dans cette table, puis-je faire cela? Si je fais:

ALTER TABLE Student ADD PARTITION (dept='CSE') location '/test';

Cela me donne une erreur:

FAILED: SemanticException table is not partitioned but partition spec exists: {dept=CSE}

veuillez aider. Merci

16
rinku buragohain

Créez d'abord une table de manière à ne pas avoir de colonne de partition dans la table.

create external table Student(col1 string, col2 string) partitioned by (dept string) location 'ANY_RANDOM_LOCATION';

Une fois que vous avez terminé la création de la table, modifiez la table pour ajouter le département de partition comme suit:

alter table Student add partition(dept ='cse') location '/test';

J'espère que cela vous aidera.

8
Naresh

Vous ne pouvez pas modifier la partition de table si vous n'avez pas défini de partition lors de la création de la table.

Si, lors de la modification d'une table non partitionnée pour ajouter une partition, vous obtenez cette erreur: "La table d'exception sémantique n'est pas partitionnée mais la spécification de partition existe: {dept = CSE}", cela signifie que vous essayez d'inclure la partitionnée dans la table elle-même .

Vous n'obtenez pas d'erreur de syntaxe car la syntaxe de la commande est correcte et utilisée pour modifier la colonne de partition.

En savoir plus sur les tables Hive:

https://www.dezyre.com//hadoop-tutorial/Apache-Hive-tutorial-tables

Vous pouvez également vérifier l'alternance possible dans le tableau:

https://sites.google.com/site/hadoopandhive/home/how-to-create-table-partition-in-Hive

J'espère que cela t'aides.

5
Abhijit Kumar