Hive: partition dynamique ajoutant à la table externe
Je suis en cours d'exécution de la ruche 071, le traitement de données existante qui est a la suite de la disposition des répertoires:
-TableName
- d= (ex: 2011-08-01)
- d=2011-08-02
- d=2011-08-03
etc ...
sous chaque date, j'ai la date des fichiers.
maintenant pour charger les données, je suis en utilisant
CREATE EXTERNAL TABLE table_name (i int)
PARTITIONED BY (date String)
LOCATION '${hiveconf:basepath}/TableName';**
Je voudrais que mon script hive pour être en mesure de charger les partitions concernées selon certains de saisie de la date et du nombre de jours. donc, si je passe date='2011-08-03' et jours='7'
Le script doit charger les partitions suivantes
- d=2011-08-03
- d=2011-08-04
- d=2011-08-05
- d=2011-08-06
- d=2011-08-07
- d=2011-08-08
- d=2011-08-09
Je havn'pas trouvé de discent façon de le faire, sauf explicitlly en cours d'exécution:
ALTER TABLE table_name ADD PARTITION (d='2011-08-03');
ALTER TABLE table_name ADD PARTITION (d='2011-08-04');
ALTER TABLE table_name ADD PARTITION (d='2011-08-05');
ALTER TABLE table_name ADD PARTITION (d='2011-08-06');
ALTER TABLE table_name ADD PARTITION (d='2011-08-07');
ALTER TABLE table_name ADD PARTITION (d='2011-08-08');
ALTER TABLE table_name ADD PARTITION (d='2011-08-09');
puis exécute ma requête
select count(1) from table_name;
cependant, c'est offcourse n'est pas automatisée en fonction de la date et des jours d'entrée
Est il possible que je peux définir à la table externe pour charger les partitions en fonction de la période ou la date de l'arithmétique?
source d'informationauteur Tomer
Vous devez vous connecter pour publier un commentaire.
J'ai un problème similaire où, après une migration, j'ai recréer un tableau pour lequel j'ai les données, mais pas les métadonnées. La solution semble être, après avoir recréé la table:
Expliqué ici
Ce fait également mention de l'
"alter table X recover partitions"
que l'OP a commenté sur son propre poste.MSCK REPAIR TABLE table_name;
travaux sur la non-Amazon-DME implémentations (Cloudera dans mon cas).Les partitions sont un physique segmentation des données - où la partition est maintenu par le répertoire système, et les requêtes d'utiliser les métadonnées pour déterminer où la partition est situé. donc, si vous pouvez faire la structure de répertoire correspondant à la requête, il doit trouver les données que vous souhaitez. par exemple:
mais je ne sais pas du tout date des opérations autrement, vous aurez à faire le calcul pour créer le modèle de requête de première.
vous pouvez également créer des tables externes, et d'ajouter des partitions que de définir l'emplacement.
Cela vous permet de déchiqueter les données que vous le souhaitez, et encore utiliser le schéma de partition pour optimiser les requêtes.
Je ne crois pas qu'il existe une fonctionnalité intégrée dans la Ruche. Vous pouvez être en mesure d'écrire un plugin. La création des UDFs
Probablement pas besoin de parler de cela, mais avez-vous considéré comme un simple script bash qui permettrait de prendre vos paramètres et le tuyau de la commande à la ruche?
Oozie flux de travail serait une autre option, mais que peut-être exagéré. Oozie Ruche Extension- Après réflexion je ne pense pas que Oozie serait travailler pour cela.Je vous ai expliqué le scénario similaire dans mon blog:
1) Vous devez définir les propriétés:
2)Créer externe de la mise en scène de la table pour charger les fichiers d'entrée de données dans cette table.
3) Créer une production principale de la table externe "production_order" avec un champ de date comme l'une des colonnes partitionnées.
4) Charge de la production de la table de la table intermédiaire, de sorte que les données sont distribuées dans les partitions automatiquement.
Expliqué le concept similaire dans le ci-dessous post de blog. Si vous voulez voir le code.
http://exploredatascience.blogspot.in/2014/06/dynamic-partitioning-with-hive.html