Charger/retirer des données dans/de Amazon S3 - 6.1

Composants Talend Open Studio Guide de référence

EnrichVersion
6.1
EnrichProdName
Talend Open Studio for Big Data
Talend Open Studio for Data Integration
Talend Open Studio for Data Quality
Talend Open Studio for ESB
Talend Open Studio for MDM
task
Création et développement
Gouvernance de données
Qualité et préparation de données
EnrichPlatform
Studio Talend

Ce scénario décrit un Job générant un fichier délimité, le chargeant le fichier dans S3, chargeant des données du fichier de S3 dans Redshift et les affichant dans la console. Ce Job retire ensuite les données de Redshift, les ajoute dans des fichiers S3 pour chaque slice du cluster Redshift puis liste et obtient les fichiers retirés dans S3.

Prérequis :

Les variables de contexte sont créées et sauvegardées dans la vue Repository. Pour plus d'informations concernant les variables de contexte, consultez le Guide utilisateur du Studio Talend.

  • redshift_host : URL de l'endpoint de connexion au cluster Redshift.

  • redshift_port : numéro du port d'écoute du serveur de la base de données.

  • redshift_database : nom de la base de données.

  • redshift_username : nom de l'utilisateur pour l'authentification à la base de données.

  • redshift_password : mot de passe pour l'authentification à la base de données.

  • redshift_schema : nom du schéma.

  • s3_accesskey : clé d'accès à Amazon S3.

  • s3_secretkey : clé secrète pour accéder à Amazon S3.

  • s3_bucket : nom du bucket Amazon S3.

Notez que toutes les valeurs de contexte dans la capture d'écran ci-dessus ont pour seul objectif la démonstration.

Ajouter et relier les composants

  1. Créez un nouveau Job et appliquez au Job toutes les variables de contexte listées ci-dessus.

  2. Ajoutez les composants suivants en saisissant leur nom dans l'espace de modélisation graphique ou en les déposant depuis la Palette : un composant tRowGenerator, un tRedshiftOutputBulk, un tRedshiftBulkExec, un tRedshiftInput, un tLogRow, un tRedshiftUnload, un tS3List et un tS3Get.

  3. Reliez le tRowGenerator au tRedshiftOutputBulk à l'aide d'un lien Row > Main.

  4. Répétez l'opération afin de relier le tRedshiftInput au tLogRow.

  5. Reliez le tS3List au tS3Get à l'aide d'un lien Row > Iterate.

  6. Reliez le tRowGenerator au tRedshiftBulkExec à l'aide d'un lien Trigger > On Subjob Ok.

  7. Répétez l'opération pour relier le tRedshiftBulkExec au tRedshiftInput, le tRedshiftInput au tRedshiftUnload et le tRedshiftUnload au tS3List.

Configurer les composants

Préparer un fichier et le charger dans S3

  1. Double-cliquez sur le tRowGenerator afin d'ouvrir son éditeur RowGenerator Editor.

  2. Cliquez deux fois sur le bouton [+] afin d'ajouter deux colonnes : ID, de type Integer et Name, de type String.

  3. Cliquez dans la cellule de la colonne Functions et sélectionnez dans la liste une fonction pour chaque colonne. Dans cet exemple, sélectionnez Numeric.sequence pour générer des nombres en séquence pour la colonne ID et sélectionnez TalendDataGenerator.getFirstName afin de générer des prénoms aléatoires pour la colonne Name.

  4. Dans le champ Number of Rows for RowGenerator, saisissez le nombre de lignes de données à générer. Dans cet exemple, saisissez 20.

  5. Cliquez sur OK pour fermer l'éditeur de schéma et acceptez la propagation proposée par la boîte de dialogue qui s'ouvre.

  6. Double-cliquez sur le tRedshiftOutputBulk pour ouvrir sa vue Basic settings.

  7. Dans le champ Data file path at local, spécifiez le chemin local pour le fichier à générer. Dans cet exemple, le chemin est E:/Redshift/redshift_bulk.txt.

  8. Dans le champ Access Key, appuyez sur les touches Ctrl + Espace et, dans la liste, sélectionnez context.s3_accesskey afin de renseigner ce champ.

    Répétez l'opération dans le champ Secret Key avec la valeur context.s3_accesskey et dans le champ Bucket avec la valeur context.s3_bucket.

  9. Dans le champ Key, saisissez un nouveau nom pour le fichier à générer après chargement dans Amazon S3. Dans cet exemple, saisissez person_load.

Charger les données du fichier de S3 dans Redshift

  1. Double-cliquez sur le tRedshiftBulkExec pour ouvrir sa vue Basic settings.

  2. Dans le champ Host, appuyez sur les touches Ctrl + Espace et, dans la liste, sélectionnez context.redshift_host afin de renseigner ce champ.

    Répétez l'opération pour :

    • le champ Port avec la valeur context.redshift_port,

    • le champ Database avec la valeur context.redshift_database,

    • le champ Schema avec la valeur context.redshift_schema,

    • le champ Username avec la valeur context.redshift_username,

    • le champ Password avec la valeur context.redshift_password,

    • le champ Access Key avec la valeur context.s3_accesskey,

    • le champ Secret Key avec la valeur context.s3_secretkey et

    • le champ Bucket avec la valeur context.s3_bucket.

  3. Dan le champ Table Name, saisissez le nom de la table à écrire. Dans cet exemple, saisissez person.

  4. Dans la liste Action on table, sélectionnez Drop table if exists and create.

  5. Dans le champ Key, saisissez le nom du fichier de Amazon S3 à charger. Dans cet exemple, saisissez person_load.

  6. Cliquez sur le bouton [...] à côté du champ Edit schema et, dans la fenêtre qui s'ouvre, définissez le schéma en ajoutant deux colonnes : ID de type Integer et Name, de type String.

Récupérer les données de la table dans Redshift

  1. Double-cliquez sur le composant tRedshiftInput pour ouvrir sa vue Basic settings.

  2. Renseignez les champs Host, Port, Database, Schema, Username et Password avec les variables de contexte correspondantes.

  3. Dans le champ Table Name, saisissez le nom de la table à lire. Dans cet exemple, saisissez person.

  4. Cliquez sur le bouton [...] à côté du champ Edit schema et, dans la fenêtre qui s'ouvre, définissez le schéma en ajoutant deux colonnes : ID de type Integer et Name, de type String.

  5. Dans le champ Query, saisissez l'instruction SQL suivante permettant de récupérer les données.

    "SELECT * FROM" + context.redshift_schema + "person ORDER BY \"ID\""
  6. Double-cliquez sur le tLogRow pour ouvrir sa vue Basic settings.

  7. Dans la zone Mode, sélectionnez Table (print values in cells of a table) pour un affichage optimal des résultats.

Retirer des données de Redshift et les ajouter dans des fichiers S3

  1. Double-cliquez sur le tRedshiftUnload pour ouvrir sa vue Basic settings.

  2. Renseignez les champs Host, Port, Database, Schema, Username et Password avec les variables de contexte correspondantes.

    Renseignez les champs Access Key, Secret Key et Bucket avec les variables de contexte correspondantes.

  3. Dans le champ Table Name, saisissez le nom de la table de laquelle lire les données. Dans cet exemple, saisissez person.

  4. Cliquez sur le bouton [...] à côté du champ Edit schema et, dans la fenêtre qui s'ouvre, définissez le schéma en ajoutant deux colonnes : ID, de type Integer et Name, de type String.

  5. Dans le champ Query, saisissez l'instruction SQL suivante à partir de laquelle les résultats seront retirés.

    "SELECT * FROM person"
  6. Dans le champ Key prefix, saisissez le préfixe du nom pour les fichiers à retirer. Dans cet exemple, saisissez person_unload_.

Récupérer les fichiers retirés de Amazon S3

  1. Double-cliquez sur le composant tS3List pour ouvrir sa vue Basic settings.

  2. Renseignez les champs Access Key et Secret Key avec les variables de contexte correspondantes.

  3. Dans la liste Region, sélectionnez la région AWS pour laquelle les fichiers retirés sont créés. Dans cet exemple, saisissez US Standard.

  4. Décochez la case List all buckets objects et cliquez sur le bouton [+] sous la table pour ajouter une ligne.

    Renseignez la colonne Bucket name avec le nom du bucket dans lequel les fichiers retirés sont créés. Dans cet exemple, saisissez la variable de contexte context.s3_bucket.

    Renseignez la colonne Key prefix avec le préfixe du nom des fichiers retirés. Dans cet exemple, saisissez person_unload_.

  5. Double-cliquez sur le tS3Get pour ouvrir sa vue Basic settings.

  6. Renseignez les champs Access Key et Secret Key avec les variables de contexte correspondantes.

  7. Dans la liste Region, sélectionnez la région AWS dans laquelle les fichiers retirés sont créés. Dans cet exemple, sélectionnez US Standard.

  8. Dans le champ Bucket, saisissez le nom du bucket dans lequel les fichiers retirés sont créés. Dans cet exemple, saisissez la variable de contexte context.s3_bucket.

    Dans le champ Key, saisissez le nom des fichiers retirés, en appuyant sur les touches Ctrl+Espace et, dans la liste, sélectionnez la variable globale ((String)globalMap.get("tS3List_1_CURRENT_KEY")).

  9. Dans le champ File, saisissez le chemin d'accès local à l'emplacement où les fichiers retirés sont sauvegardés. Dans cet exemple, saisissez "E:/Redshift/" + ((String)globalMap.get("tS3List_1_CURRENT_KEY")).

Sauvegarder et exécuter le Job

  1. Appuyez sur les touches Ctrl + S afin de sauvegarder votre Job.

  2. Exécutez le Job en appuyant sur F6 ou en appuyant sur le bouton Run de la vue Run.

    Comme affiché ci-dessus, les données générées sont écrites dans le fichier local redshift_bulk.txt. Le fichier est chargé dans S3 avec un nouveau nom, person_load. Les données sont chargées du fichier S3 dans la table person de Redshift et affichées dans la console. Les données sont ensuite retirées de la table personn de Redshift et ajoutées à deux fichiers person_unload_0000_part_00 et person_unload_0001_part_00 dans S3, par slice du cluster Redshift, puis les fichiers retirés de S3 sont listés et récupérés dans le dossier local.