tRedshiftBulkExec - 6.1

Composants Talend Guide de référence

EnrichVersion
6.1
EnrichProdName
Talend Big Data
Talend Big Data Platform
Talend Data Fabric
Talend Data Integration
Talend Data Management Platform
Talend Data Services Platform
Talend ESB
Talend MDM Platform
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
Talend Real-Time Big Data Platform
task
Création et développement
Gouvernance de données
Qualité et préparation de données
EnrichPlatform
Studio Talend

Propriétés du tRedshiftBulkExec

Les composants tRedshiftOutputBulk et tRedshiftBulkExec sont généralement utilisés ensemble comme deux parties d'un processus pour charger des données dans Amazon Redshift à partir d'un fichier CSV/délimité dans Amazon S3. Au cours de la première étape, un fichier délimlité/CSV est généré. Au cours de la seconde étape, le fichier est utilisé dans une instruction INSERT utilisée pour alimenter. Cette exécution en deux étapes est unifiée dans le composant tRedshiftOutputBulkExec. L'intérêt de proposer deux composants séparés réside dans le fait que cela permet de procéder à des transformations avant le changement des données dans Amazon Redshift.

Famille du composant

Databases/Amazon Redshift

 

Fonction

Le tRedshiftBulkExec charge des données dans une table Amazon Redshift à partir d'un fichier plat situé dans Amazon S3.

Objectif

Ce composant vous permet de charger des données dans à partir d'un fichier Amazon S3.

Basic settings

Property Type

Peut être Built-In ou Repository.

Depuis la version 5.6, les modes Built-In et Repository sont disponibles dans toutes les solutions de Talend.

 

 

Built-In : Propriété utilisée ponctuellement.

 

 

Repository : Sélectionnez le fichier de propriétés du composant. Les champs suivants sont alors pré-remplis à l'aide des données collectées.

Database settings

Use an existing connection

Cochez cette case et sélectionnez le composant de connexion adéquat à partir de la liste Component List pour réutiliser les paramètres d'une connexion que vous avez déjà définie.

 

Host

Saisissez l'adresse IP ou le nom de l'hôte du serveur de la base de données.

 

Port

Saisissez le numéro du port d'écoute du serveur de la base de données.

 

Database

Saisissez le nom de la base de données.

 

Schema

Saisissez le nom du schéma.

 

Username et Password

Saisissez les données d'authentification de l'utilisateur de la base de données.

Pour saisir le mot de passe, cliquez sur le bouton [...] à côté du champ Password, puis, dans la boîte de dialogue qui s'ouvre, saisissez le mot de passe entre guillemets doubles, puis cliquez sur OK afin de sauvegarder les paramètres.

 

Table Name

Spécifiez le nom de la table à écrire. Notez que seule une table peut être écrite à la fois.

 

Action on table

Sur la table définie, vous pouvez effectuer l'une des opérations suivantes :

  • None : n'effectuer aucune opération sur la table.

  • Drop and create table : supprimer la table puis en créer une nouvelle.

  • Create table : créer une table qui n'existe pas encore.

  • Create table if not exists : créer la table si nécessaire.

  • Drop table if exists and create : supprimer la table si elle existe déjà, puis en créer une nouvelle.

  • Clear table : supprimer le contenu de la table.

 

Schema et Edit schema

Un schéma est une description de lignes, il définit le nombre de champs (colonnes) qui sont traités et passés au composant suivant. Le schéma est soit local (Built-In), soit distant dans le Repository.

Depuis la version 5.6, les modes Built-In et Repository sont disponibles dans toutes les solutions de Talend.

 

 

Built-In : Le schéma est créé et conservé ponctuellement pour ce composant seulement. Voir également le Guide utilisateur du Studio Talend.

 

 

Repository : Le schéma existe déjà et il est stocké dans le Repository. Ainsi, il peut être réutilisé. Voir également le Guide utilisateur du Studio Talend.

 

 

Cliquez sur Edit schema pour modifier le schéma. Si le schéma est en mode Repository, trois options sont disponibles :

  • View schema : sélectionnez cette option afin de voir le schéma.

  • Change to Built-In property : sélectionnez cette option pour passer le schéma en mode Built-In et effectuer des modifications locales.

  • Update repository connection : sélectionnez cette option afin de modifier le schéma stocké dans le référentiel et décider de propager ou non les modifications à tous les Jobs. Si vous souhaitez propager les modifications uniquement au Job courant, sélectionnez No et sélectionnez à nouveau la métadonnée du schéma dans la fenêtre [Repository Content].

S3 Setting

Access Key

Spécifiez l'ID de la clé d'accès identifiant de manière unique un compte AWS. Pour plus d'informations concernant l'obtention de votre clé d'accès et clé secrète, consultez Getting Your AWS Access Keys (en anglais).

 

Secret Key

Spécifiez la clé secrète d'accès, constituant les informations de sécurité, ainsi que la clé d'accès.

Pour saisir la clé secrète, cliquez sur le bouton [...] à côté du champ Secret key, puis, dans la boîte de dialogue qui s'ouvre, saisissez le mot de passe entre guillemets doubles puis cliquez sur OK afin de sauvegarder les paramètres.

 

Bucket

Saisissez le nom du bucket Amazon S3, le dossier de plus haut niveau, dans lequel le fichier est situé.

 

Key

Saisissez la clé d'objet assignée au fichier à charger dans Amazon S3.

Advanced settings

File type

Sélectionnez dans la liste le type de fichier dans Amazon S3 :

  • Delimited file or CSV : fichier délimité/CSV.

  • JSON : fichier JSON.

  • Fixed width : fichier à taille fixe.

 

Fields terminated by

Saisissez le caractère utilisé pour séparer les champs.

Ce champ est disponible uniquement lorsque l'option Delimited file or CSV est sélectionnée dans la liste File type.

 

Enclosed by

Sélectionnez le caractère par lequel entourer les champs.

Cette liste est disponible uniquement lorsque l'option Delimited file or CSV est sélectionnée dans la liste File type.

 

JSON mapping

Spécifiez comment mapper les éléments de données dans le fichier JSON source dans Amazon S3 vers les colonnes dans la table cible d'Amazon Redshift. Les valeurs valides sont :

  • auto : mappe les données en faisant correspondre les clés ou noms des objets dans les paires source nom/valeur vers les noms de colonnes dans la table cible. L'argument est sensible à la casse et doit être entouré de guillemets doubles.

  • s3://jsonpaths_file : mappe les données à l'aide du fichier nommé JSONPaths. Le paramètre doit être une clé d'objet Amazon S3 entouré de guillemets doubles et faisant référence à un fichier, par exemple, s3://mybucket/jsonpaths.txt. Pour plus d'informations, consultez http://docs.aws.amazon.com/redshift/latest/dg/r_COPY.html (en anglais).

Ce champ est disponible uniquement lorsque l'option JSON est sélectionnée dans la liste File type.

 

Fixed width mapping

Saisissez une chaîne de caractères spécifiant un libellé et une largeur de colonne personnalisés entre guillemets doubles. Le format de la chaîne de caractères est le suivant :

ColumnLabel1:ColumnWidth1,ColumnLabel2:ColumnWidth2,....

Notez que le libellé de la colonne dans la chaîne de caractères n'a aucun lien avec le nom de la colonne de la table et peut être une chaîne de caractères ou un entier. L'ordre des paires libellé/largeur doit correspondre à l'ordre exact des colonnes de la table.

Ce champ est disponible uniquement lorsque l'option Fixed width est sélectionnée dans la liste File type.

 

Compressed by

Cochez cette case et, dans la liste affiché, sélectionnez le type de compression du fichier source.

 

Decrypt

Cochez cette case si le fichier est crypté du côté client à l'aide de Amazon S3. Pour plus d'informations, consultez Loading Encrypted Data Files from Amazon S3 (en anglais).

 

Encryption key

Spécifiez la clé de cryptage utilisée pour crypter le fichier.

Ce champ apparaît uniquement lorsque la case Decrypt est cochée.

 

Encoding

Sélectionnez dans la liste le type d'encodage des données à charger.

 

Date format

Sélectionnez l'un des éléments suivants afin de spécifier le format de date dans les données source :

  • NONE : aucun format de date n'est spécifié.

  • PATTERN : sélectionnez cet élément et spécifiez le format de date dans le champ affiché. Le format de date par défaut est YYYY-MM-DD.

  • AUTO : sélectionnez cet élément si vous souhaitez que Amazon Redshift reconnaisse et convertisse automatiquement le format de date.

 

Time format

Sélectionnez l'un des éléments suivants dans la liste, afin de spécifier le format de l'heure dans les données source :

  • NONE : aucun format d'heure n'est spécifié.

  • PATTERN : sélectionnez cet élément et spécifiez le format de l'heure dans le champ affiché. Le format de l'heure par défaut est YYYY-MM-DD HH:MI:SS.

  • AUTO : sélectionnez cet élément si vous souhaitez qu'Amazon Redshift reconnaisse et convertisse le format de l'heure.

  • EPOCHSECS : sélectionnez cet élément si les données source sont représentées comme temps epoch, soit le nombre de secondes depuis Jan 1, 1970 00:00:00 UTC.

  • EPOCHMILLISECS : sélectionnez cet élément si les données source sont représentées comme temps epoch, soit le nombre de millisecondes depuis Jan 1, 1970 00:00:00 UTC.

 

Settings

Cliquez sur le bouton [+] sous la table afin de spécifier plus de paramètres pour le chargement des données.

  • Parameter : cliquez sur la cellule et sélectionnez un paramètre dans la liste déroulante.

  • Value : configurez la valeur du paramètre correspondant. Notez que vous ne pouvez configurer la valeur d'un paramètre (par exemple IGNOREBLANKLINES) ne nécessitant pas de valeur.

Pour plus d'informations concernant les paramètres, consultez http://docs.aws.amazon.com/redshift/latest/dg/r_COPY.html (en anglais).

 

tStatCatcher Statistics

Cochez cette case pour collecter les données de log au niveau du Job ainsi qu'au niveau de chaque composant.

Dynamic settings

Cliquez sur le bouton [+] pour ajouter une ligne à la table. Dans le champ Code, saisissez une variable de contexte afin de sélectionner dynamiquement votre connexion à la base de données parmi celles prévues dans votre Job. Cette fonctionnalité est utile si vous devez accéder à plusieurs tables de bases de données ayant la même structure mais se trouvant dans différentes bases de données, en particulier lorsque vous travaillez dans un environnement dans lequel vous ne pouvez pas changer les paramètres de votre Job, par exemple lorsque votre Job doit être déployé et exécuté dans un Studio Talend indépendant.

La table Dynamic settings n'est disponible que si la case Use an existing connection est cochée dans la vue Basic settings. Lorsqu'un paramètre dynamique est configuré, la liste Component List devient inaccessible dans la vue Basic settings.

Pour des exemples sur l'usage des paramètres dynamiques, consultez Scénario 3 : Lire des données dans des bases de données MySQL à l'aide de connexions dynamiques basées sur les variables de contexte et Scénario : Lire des données à partir de différentes bases de données MySQL à l'aide de paramètres de connexion chargés dynamiquement. Pour plus d'informations concernant les Dynamic settings et les variables de contexte, consultez le Guide utilisateur du Studio Talend.

Global Variables

ERROR_MESSAGE : message d'erreur généré par le composant lorsqu'une erreur survient. Cette variable est une variable After et retourne une chaîne de caractères. Cette variable fonctionne uniquement si la case Die on error est décochée, si le composant a cette option.

Une variable Flow fonctionne durant l'exécution d'un composant. Une variable After fonctionne après l'exécution d'un composant.

Pour renseigner un champ ou une expression à l'aide d'une variable, appuyez sur les touches Ctrl+Espace pour accéder à la liste des variables. A partir de cette liste, vous pouvez choisir la variable que vous souhaitez utiliser.

Pour plus d'informations concernant les variables, consultez le Guide utilisateur du Studio Talend.

Utilisation

Le composant tRedshiftBulkExec supporte le chargement des données dans Amazon Redshift depuis un fichier délimité/CSV, JSON, ou à taille fixe, dans Amazon S3, mais le composant tRedshiftOutputBulk supporte uniquement la génération et le chargement d'un fichier délimité/CSV dans Amazon S3. Lorsque vous devez charger des données depuis un fichier JSON ou à taille fixe, vous pouvez utiliser le composant tFileOutputJSON ou tFileOutputpositional avec le tS3Put au lieu d'utiliser le composant tRedshiftOutputBulk pour générer et charger le fichier dans Amazon S3.

Log4j

Si vous utilisez une solution Talend soumise à souscription, l'activité de ce composant peut être journalisée avec la fonctionnalité log4j. Pour plus d'informations sur cette fonctionnalité, consultez le Guide utilisateur du Studio Talend.

Pour plus d'informations sur les niveaux de logs du log4j, consultez la documentation d'Apache : http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/Level.html (en anglais).

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

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.