Comment migrer vos données de votre site vers le Cloud : Amazon S3

Comment migrer vos données de votre site vers le Cloud : Amazon S3

  • Eric Higaki
    Eric Higaki joined Talend in 2017 as an Associate Evangelist. In this role, Eric works on the community team to provide technical support and brand awareness. Prior to Talend, Eric worked on the Integration team at the largest protein producing company in the world, while also studying at Colorado State University. Go Rams!

Migrer vers le Cloud

L’année 2018 est celle du Cloud, et comme un nombre croissant d’entreprises opèrent une transition vers les technologies du Cloud, il est important de comprendre comment votre entreprise peut exploiter le Cloud à son maximum. L’un des problèmes majeurs pour les entreprises aujourd’hui consiste à migrer leurs données de leurs bases de données sur site vers leur stockage Cloud. Sans les outils adaptés, ce processus peut s’avérer long et fastidieux. Heureusement, Talend est là !

Ici à Talend, je devais prendre notre base de données sur site, MySQL, pour la migrer vers notre stockage Cloud, Amazon S3. Au lieu de me confronter aux difficultés d’Apache Sqoop, j’ai décidé de créer une tâche dans Talend qui serait exécutée à chaque fois que nous aurions besoin de migrer de nouvelles données vers le Cloud. Cette méthode m’a fait gagner un temps précieux que je peux mettre à profit pour analyser mes données récemment migrées. Dans ce blog, je vais vous expliquer comment j’ai développé cette tâche. Allons-y !

Créer une connexion

Comme avec n’importe quelle tâche Talend, il faut d’abord créer des connexions. Comme j’ai ma base de données MySQL, je vais utiliser le composant tMysqlConnection. Je dois également créer une connexion à mon stockage S3 dans le Cloud en utilisant tS3Connection. Comme j’aurai d’abord besoin de me connecter à MySQL et S3 à chaque fois que j’exécuterai cette tâche, je vais également ajouter tPrejob avant chaque composant.

Rappelez-vous que Talend est un outil de génération de code. En utilisant tPrejob, je peux contrôler les éléments qui seront compilés en premier pour toujours maintenir la connexion avec mes bases de données. Après avoir configuré les deux composants de connexion, je peux connecter ensemble tPrejob, tMysqlConnection, et tS3Connection, comme dans la capture d’écran ci-dessous.

Obtenir vos tableaux et configurer le schéma dynamique

Maintenant que la connexion avec mes deux plateformes de stockage est établie, je peux commencer la migration vers le Cloud à partir de MySQL et Amazon S3. Pour commencer, j’ai besoin d’une liste de tous les tableaux que je veux sortir de la base de données. Avec tMysqlTableList, je peux indiquer les tableaux que je veux intégrer à ma liste grâce à la « clause WHERE ».  Dans le cas présent, seuls les tableaux clients m’intéressent.

Maintenant que j’ai la liste de tous les tableaux que je veux transférer, je dois obtenir une liste des colonnes de ces tableaux.

Les variables globales « tMysql » sont un moyen formidable d'extraire les valeurs des composants. Ces variables globales peuvent extraire des données des composants « tMysql » pour que d’autres composants les utilisent. Dans ce cas « ((String)globalMap.get(“tMysqlTableList_1_CURRENT_TABLE”)) » ordonnera au composant d’extraire des colonnes des tableaux rassemblés par le composant tMysqlTableList. Avec Talend, on peut facilement récupérer des variables globales sans avoir à les mémoriser. Tout ce que j’ai à faire, c’est taper « tMysql », appuyer sur Ctrl + Espace pour que toutes les variables globales « tMysql » apparaissent dans une liste où je pourrai sélectionner celle que je veux.

Je dois ensuite ajouter tFixedFlowInput pour générer les colonnes « tableName » et « columnName ». Les valeurs ne s’afficheront dans le composant tFixedFlowInput que si je configure d’abord le schéma pour ces colonnes. Une fois le schéma configuré, je peux définir la valeur pour ces colonnes, à savoir ((String)globalMap.get(“tMysqlTAbleList_1_CURRENT_TABLE”)) pour « tableName » et ((String)globalMap.get(“tMysqlTAbleList_1_COLUMN_NAME”)) pour « columnName ».

En ajoutant tLogRow après le flux fixe, je verrai les noms des tableaux et colonnes d’où ma tâche extrait des données. Ces informations seront affichées sur la console d’exécution. Voici une capture d’écran actualisée de ma tâche à ce stade.

Il est temps maintenant de configurer le schéma dynamique qui sera utilisé par les données lors de leur extraction de ma base de données sur site. Comme son nom l’indique, un schéma dynamique est un schéma type qui changera en fonction de la colonne qui est lue. Il est donc essentiel pour cette tâche.

Pour configurer un schéma dynamique, je vais utiliser un composant sophistiqué appelé tSetDynamicSchema. Outre son nom génial, tSetDynamicSchema va me permettre de configurer le schéma de manière dynamique en fonction de la valeur « columnName ». Comme mon schéma est devenu dynamique, je n’ai plus besoin de déplacer manuellement chaque tableau. Je peux maintenant déplacer plusieurs tableaux différents en toute facilité.

Lire les données et écrire les tableaux

Mon schéma dynamique étant maintenant configuré, je suis prêt à écrire les données du tableau avec le type dynamique créé à partir du composant tSetDynamicSchema. Comme je lis les données à partir de ma base de données sur site, je dois utiliser un composant d’entrée qui pourra lire à partir d’une base de données MySQL, à savoir tMysqlInput. Je dois d’abord modifier le schéma du composant tMysqlInput pour utiliser le type dynamique DB. J’ai nommé la colonne pour ce schéma « dynamic_row » avec le type « Dynamic » (évidemment) et le type DB, « VARCHAR ».

Une fois le schéma établi, je peux passer à la configuration du composant tMysqlInput, en m’assurant que les données extraites du tableau actuel sont répertoriées par tMysqlTableList.

Les données des tableaux sont maintenant lues à partir du tableau actuellement répertorié. Cependant, les données doivent encore être écrites dans un fichier CSV. Pour cela, je vais utiliser tFileOutputDelimited. Je dois m’assurer que « File Name » suit le bon chemin de fichier.

Et bien ! Ne vous en faites pas, nous avons presque fini. Voici un aperçu actualisé de la tâche que j’ai créée, au stade actuel.

Mettre des fichiers sur Amazon S3

Jusqu’à présent, la tâche lit tous les tableaux avec le nom du client et les écrit dans des fichiers CSV d’un dossier spécifique. Puisque je peux désormais extraire les données de tableaux situés dans ma base de données sur site, je dois terminer la tâche en déplaçant ces fichiers vers Amazon S3.

tFileList va me permettre d’obtenir une liste de tous les fichiers d’un dossier spécifique, ou dans le cas présent, une liste de tous les tableaux que j’ai extraits de ma base de données sur site. Il me suffit d’indiquer le répertoire qui contient les fichiers.

Une fois que j’ai obtenu une liste de tous les fichiers, je peux commencer à les déplacer dans l’un de mes buckets S3. C’est ce que je vais faire grâce au composant tS3Put. Je n’ai qu’à préciser les « Bucket », « Key » et « File », « Key » étant le nom du fichier dans S3 et « File » le nom du fichier qui est en train d’être téléchargé dans S3.

La configuration de tFileList et tS3Put étant terminée, il ne reste plus qu’à mettre la touche finale à notre tâche de migration vers le Cloud. Vous vous souvenez des connexions que j’ai établies au début de la tâche ? Avec tPostjob, tMysqlClose et tS3Close, je peux fermer ces connexions que j’ai ouvertes à chaque exécution de la tâche. Comme avant, je veux pouvoir contrôler ce qui se passe une fois que la boucle principale est compilée, d’où le composant tPostjob. Simple comme bonjour ! La tâche terminée devrait ressembler à peu près à ça.

Exécuter la tâche

Si la tâche est exécutée et que tout se passe bien, la console d’exécution devrait ressembler à la capture d’écran ci-dessous. Comme vous pouvez le voir, la console affiche le tableau qui est actuellement lu et écrit, ainsi que le nom de la colonne correspondante.

Maintenant que cette tâche est terminée, je peux déplacer n’importe quel tableau de ma base de données sur site vers mon stockage Cloud sans avoir à créer plusieurs tâches pour chaque tableau, ou à devoir m’embêter avec un codage manuel. C’est bon d’être paré pour le Cloud !

Regardez cette démo EN LIGNE

Vous voulez voir cette démo EN LIGNE ? Rejoignez-nous jeudi 22 mars sur la page Facebook de Talend #TalendDevLive pour me voir développer cette tâche étape par étape, et répondre à vos questions. Ne ratez pas cet événement !

Participer aux discussions

0 Comments

Laisser un commentaire

Your email address will not be published. Required fields are marked *