2015-10-29 1 views
0

J'ai stocké les données dans hdfs en utilisant Pig Multistorage avec l'ID de colonne.Insérer des données partitionnées dans la table de ruche partitionnée

Ainsi les données stockées sous forme

/output/1/part-0000 
/output/2/ 
/output/3/ 

Maintenant, j'ai créé une table partitionnée dans la ruche et je veux charger les données à partir de/dossier de sortie dans cette table partitionnée. Y'a-t-il une quelconque façon de réussir cela?

Répondre

0

D'abord vous créez une table de ruche temp où vous chargez toutes les données de la sortie de porc.
Ensuite, vous chargez vers votre table de ruche partitionnée réelle à partir de la table temporaire.
Quelque chose comme ci-dessous:

FROM emp_external temp INSERT OVERWRITE TABLE emp_partition PARTITION(country) SELECT temp.id,temp.name,temp.dept,temp.sal,temp.country; 

vous pouvez explorer Else Hcatlog pour ce cas.

0

Vous ne savez pas si vous souhaitez insérer les données dans le dossier de sortie (créé à partir de cochon) dans une table existante ou charger les données dans le dossier de sortie dans une nouvelle table partitionnée de la ruche.

Si vous voulez charger les données dans la nouvelle table ruche, vous pouvez créer une nouvelle table partitionnée pointant vers le dossier de sortie

Si vous cherchez à charger les données dans une table de ruche existante, vous pouvez soit créer une table temporaire comme @Aman mentioed et faire un insert dans la table de destination

ou

Vous pouvez simplement déplacer/copier les fichiers HDFS de sortie/Hive emplacement de la table.

Hope this helps

0

Attribuer un schéma Hive à l'emplacement de sortie de porc avec des colonnes partitionnées (alter table Ajouter Partition) comme identifiant de colonne. Maintenant, les deux sont des tables de ruche et vous pouvez utiliser la clause where sur une colonne partitionnée pour déplacer les données.