J'ai un travail Map uniquement qui traite un fichier texte volumineux. Chaque ligne est analysée et catégorisée. MultipleOutputs est utilisé pour sortir chaque catégorie dans des fichiers séparés. Finalement, toutes les données sont ajoutées à une table Hive dédiée à chaque catégorie. Mon flux de travail actuel fait le travail mais est un peu lourd. Je vais ajouter quelques catégories, et j'ai pensé que je pourrais peut-être rationaliser le processus. J'ai quelques idées et je cherchais des idées.Ajout des résultats d'un travail Hadoop à Hive Table
Flux de travail actuel:
- emploi de la carte seule divise grand fichier en catégories. La sortie ressemble à ceci:
-
categ1-m-00000
categ1-m-00001
categ1-m-00002
categ2-m-00000
categ2-m-00001
categ2- m-00002
categ3-m-00000
categ3-m-00001
categ3-m-00002
- Un processus externe (non-Hadoop) copie les fichiers de sortie dans des répertoires distincts pour chaque catégorie.
-
categ1/00000
categ1/00001
categ1/00002
categ2/00000
categ2/00001
categ2/00002
categ3/00000
categ3/00001
categ3/00002
- Une table externe est créée pour chaque catégorie, puis les données sont insérées dans la table Hive permanente de cette catégorie.
nouveaux flux de travail possibles
- utilisation Spark à boucle à travers les fichiers de sortie, et en fonction du nom de fichier, insérer les données dans la table Hive permanente appropriée.
- Utilisez HCatalog pour insérer les données dans la table Hive permanente directement depuis le mappeur, ou peut-être un réducteur ou un ensemble de réducteurs dédiés à chaque catégorie.
Cela a fonctionné comme un charme! Je ne peux pas croire que j'ai raté cette version de l'écriture. –