Hive version 1.1
J'ai une table externe Hive comme ci-dessous
CREATE EXTERNAL TABLE `schedule_events`(
`schedule_id` string COMMENT 'from deserializer',
`service_key` string COMMENT 'from deserializer',
`event_start_date_time` string COMMENT 'from deserializer',
`event_id` string COMMENT 'from deserializer',
`event_type` string COMMENT 'from deserializer',
`transitional_key` string COMMENT 'from deserializer',
`created_date_time` string COMMENT 'from deserializer',
`bus_date` string COMMENT 'from deserializer')
PARTITIONED BY (
`year` string,
`month` string,
`day` string)
ROW FORMAT SERDE
'org.Apache.hadoop.Hive.serde2.avro.AvroSerDe'
STORED AS INPUTFORMAT
'org.Apache.hadoop.Hive.ql.io.avro.AvroContainerInputFormat'
OUTPUTFORMAT
'org.Apache.hadoop.Hive.ql.io.avro.AvroContainerOutputFormat'
LOCATION
'hdfs://nameservice1/hadoop/raw/omega/scheduled_events'
TBLPROPERTIES (
'avro.schema.url'='hdfs:////hadoop/raw/omega/schema/schedule_events.avsc',
'transient_lastDdlTime'='1505742141')
Maintenant, pour supprimer une partition particulière, je peux exécuter une commande ALTER comme ci-dessous
ALTER TABLE schedule_events DROP IF EXISTS PARTITION (year='2016',month='06',day='01')
Dropped the partition year=2016/month=06/day=01
Hive> show partitions schedule_events;
OK
year=2017/month=09/day=01
year=2017/month=09/day=02
year=2017/month=09/day=03
year=2017/month=09/day=04
year=2017/month=09/day=05
Mais cette table a beaucoup de partitions
Comment puis-je supprimer toutes les partitions existantes à la fois? Je voudrais supprimer toutes les partitions existantes à la fois? Est-ce possible?
Il y a plusieurs options, en voici une:
alter table schedule_events drop if exists partition (year<>'');
Hive: Étendre la syntaxe ALTER TABLE DROP PARTITION pour utiliser tous les comparateurs
"... Pour supprimer une partition d'une table Hive, cela fonctionne:
ALTER TABLE foo DROP PARTITION (ds = 'date')
... mais il devrait également fonctionner pour supprimer toutes les partitions avant la date.
ALTER TABLE foo DROP PARTITION (ds <'date') Cette tâche consiste à implémenter ALTER TABLE DROP PARTITION pour tous les fichiers comparateurs, <> <=> = <> =! = au lieu de juste pour = "
Vous pouvez utiliser quelque chose de similaire à ceci:
ALTER TABLE schedule_events drop if exists partition (year>'0');
alter table nom_schéma.nom_table drop partition (partition_column! = '');