Votre organisation doit convertir un grand volume de données clients dans un fichier plat en données struct et l'écrire dans un fichier Avro. Le fichier d'entrée contient des détails clients tels que le nom, l'âge et les numéros de téléphone. Si le nom du client est null dans le fichier d'entrée, vous ne voulez pas ajouter les détails clients au fichier de sortie.
Vous pouvez développer un mappage à l'aide d'une transformation Java pour définir la fonctionnalité de transformation. Dans l'environnement Hadoop, exécutez le mappage sur le moteur Spark pour transformer les données et écrire les données struct dans un fichier Avro.
Créez un mappage et configurez les transformations suivantes :
Transformation Lecture qui lit les informations clients depuis une source de fichier plat
Transformation Java en tant que transformation active qui convertit les données de fichiers plats en données struct et qui supprime les données incohérentes
Transformation Écriture qui écrit les données struct dans un fichier Avro
L'image suivante montre le mappage à l'aide des transformations Lecture, Java et Écriture.
Dans l'onglet Bibliothèque de définitions de types de l'éditeur de mappage, créez une définition de type de données complexe Customer. La définition de type de données complexe représente le schéma des données struct. Renommez la bibliothèque de définitions de types en CustomerInfo. Ajoutez les éléments suivants à la définition de type de données complexe :
nom de type string
âge de type integer
numéros de téléphone de type array avec des éléments string
L'image suivante montre la définition de type de données complexe dans la bibliothèque de définitions de types :
Dans la transformation Java, ajoutez un port de sortie struct et spécifiez la configuration type du port pour référencer la définition de type de données complexe que vous avez créée. La transformation Java génère une classe Customer avec les setters et les getters pour lire et définir les champs membres. Cette classe contient les champs membres suivants :
_name
_age
_phones
L'image suivante montre la classe créée pour le port struct dans l'onglet
Code complet
de la vue
Java
:
Le type de données Java du port struct utilise le nom de la bibliothèque de définitions de types et la définition de type de données complexe. L'image suivante montre le nom du type de données CustomerInfo.Customer Java pour le champ cust dans le code généré :
Dans la vue
Java
de la transformation Java, importez des packages Java personnalisés, tiers ou intégrés que la transformation exige. Écrivez et compilez le code Java pour convertir les données de fichiers plats en données struct et pour supprimer la ligne client si le nom du client est Null.
L'image suivante montre le code dans l'onglet
À l'entrée
:
Validez et exécutez le mappage sur le moteur Spark pour écrire les données transformées dans la sortie du fichier Avro.