La suppression d'une gamme de partitions dans la RUCHE
J'ai une Ruche (version 0.11.0) table partitionnée en colonne de la date, de type string. Je veux savoir si il existe un chemin dans la Ruche en qui je peux supprimer des partitions pour une plage de dates (disons à partir de 'date1' à 'date2'). J'ai essayé le suivant (de type SQL) les requêtes, mais ils ne semblent pas être syntaxiquement correct:
ALTER TABLE myTable DROP IF EXISTS PARTITION
(date>='date1' and date<='date2');
ALTER TABLE myTable DROP IF EXISTS PARTITION
(date>='date1' && date<='date2');
ALTER TABLE myTable DROP IF EXISTS PARTITION
(date between 'date1' and 'date2');
OriginalL'auteur Rajeev Atmakuri | 2015-10-16
Vous devez vous connecter pour publier un commentaire.
Je ne pense pas qu'il existe une solution valable à ce jour. J'ai mis en place une solution de contournement pour ce problème à l'aide de certains scripts shell, comme par exemple:
La résultante .hql fichier peut être tout simplement exécutés à l'aide de la ruche (ou beeline) -f option.
Évidemment les boucles devraient être en mesure de générer de la plage que vous souhaitez déplacer, ce qui peut être non négligeable. Dans le pire des cas, vous aurez besoin d'utiliser plusieurs de ces scripts shell afin de déposer la plage de dates.
De plus, veuillez noter que dans mon cas les partitions avait quatre clés (année, mois, jour, heure). Si vos dates/partitions sont codées comme des chaînes de caractères (pas une bonne idée à mon avis), vous aurez à 'construire' votre cible chaîne des variables y, m, d et h dans le script shell, et le tracé de la chaîne à l'intérieur de la commande echo. Par ailleurs, le mannequin de la partition (ne contenant que des 0) est juste là pour écrire facilement au moyen de 3 à 4 boucles) de l'ensemble de l 'ALTER TABLE' commande', qui a une syntaxe spéciale.
OriginalL'auteur Vicente Reyes-Puerta
J'ai essayé cette syntaxe, il a travaillé.
De sortie de la commande:
Je suis aide, la Ruche 1.2.1000.2.5.5.0-157
C'est ET pas OU. Exemple: les dates>'2018-04-14' et les dates<'2018-04-16'
OriginalL'auteur Kharthigeyan
Solution:
alter table myTable drop partition (unix_timestamp('date1','yyyy-MM-dd')>unix_timestamp(myDate,'yyyy-MM-dd'),unix_timestamp('date2','yyyy-MM-dd')<unix_timestamp(myDate,'yyyy-MM-dd'));
Alter table mytable baisse de la partition (madate > '2018-11-01' , madate < '2019-02-12')
OriginalL'auteur HakkiBuyukcengiz