tRedshiftBulkExec - 6.3

Composants Talend Open Studio Guide de référence

EnrichVersion
6.3
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

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.

Fonction

Le tRedshiftBulkExec charge des données dans une table Amazon Redshift à partir d'une table Amazon DynamoDB ou de fichiers plats situé dans un bucket Amazon S3, un cluster Amazon S3, ou un hôte distant auquel accéder à l'aide d'une connexion SSH.

Objectif

Ce composant vous permet de charger des données dans à partir d'Amazon S3, d'un cluster Amazon EMR, d'Amazon DynamoDB ou d'hôtes distants.

Propriétés du tRedshiftBulkExec

Famille du composant

Databases/Amazon/Redshift

 

Basic settings

Property Type

Peut être Built-In ou Repository.

  • - Built-In : Propriétés utilisées ponctuellement.

  • - Repository : Sélectionnez le fichier dans lequel sont stockées les propriétés du composant.

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

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 et cliquez sur OK afin de sauvegarder les paramètres.

 

Additional JDBC Parameters

Définissez des propriétés JDBC supplémentaires pour la connexion que vous créez. Les propriétés sont séparées par une esperluette et chaque propriété est une paire clé-valeur. Par exemple, ssl=true & sslfactory=com.amazon.redshift.ssl.NonValidatingFactory, qui signifie que la connexion sera créée en utilisant le SSL.

 

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.

  • 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.

Depuis la version 5.6, les modes Built-In et Repository sont disponibles dans toutes les solutions de 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, cliquez sur No et sélectionnez à nouveau la métadonnée du schéma dans la fenêtre [Repository Content].

 

Data source type

Sélectionnez l'emplacement des données source à charger.

  • S3 : charger des données d'un fichier dans un bucket Amazon S3.

  • EMR : charger des données d'un cluster Amazon EMR.

  • DynamoDB : charger des données d'une table DynamoDB existante.

  • Remote host : charger des données d'un hôte distant ou plusieurs, comme des instances de Amazon Elastic Compute Cloud (Amazon EC2) ou d'autres ordinateurs.

Pour plus d'informations, consultez Data Sources (en anglais).

 

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

Spécifiez le nom du bucket Amazon S3, contenant les données à charger.

Ce champ est disponible uniquement lorsque l'option S3 ou Remote host est sélectionnée dans la liste Data source type.

 

Key

Saisissez la clé d'objet pour le fichier à charger dans Amazon S3.

Ce champ est disponible uniquement lorsque l'option S3 est sélectionnée dans la liste Data source type.

 

Cluster id

Spécifiez l'ID du cluster stockant les données à charger.

Ce champ est disponible uniquement lorsque l'option EMR est sélectionnée dans la liste Data source type.

 

HDFS path

Spécifiez le chemin d'accès au fichier HDFS référençant le fichier de données.

Ce champ est disponible uniquement lorsque l'option EMR est sélectionnée dans la liste Data source type.

 

Table

Spécifiez le nom de la table DynamoDB contenant les données à charger.

Ce champ est disponible uniquement lorsque l'option DynamoDB est sélectionnée dans la liste Data source type.

 

Read ratio

Spécifiez le pourcentage du débit fourni pour la table DynamoDB à utiliser pour le chargement des données.

Ce champ est disponible uniquement lorsque l'option DynamoDB est sélectionnée dans la liste Data source type.

 

SSH manifest file

Spécifiez la clé d'objet pour le fichier manifest SSH fournissant les information utilisées pour ouvrir les connexions SSH et exéctuer des commandes distantes.

Ce champ est disponible uniquement lorsque l'option Remote host est sélectionnée dans la liste Data source type.

Advanced settings

File type

Sélectionnez dans la liste le type de fichier contenant les données à charger :

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

  • JSON : fichier JSON.

  • AVRO : un fichier Avro.

  • Fixed width : fichier à taille fixe.

Cette liste est disponible lorsque l'option S3, EMR, ou Remote host est sélectionnée dans la liste Data source type.

 

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 source 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 pour un fichier JSON ou les noms de champs dans le schéma Avro pour un fichier Avro 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 Data Format Parameters (en anglais).

Ce champ est disponible uniquement lorsque l'option JSON ou AVRO 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.

Cette case est disponible lorsque l'option S3, EMR, ou Remote host est sélectionnée dans la liste Data source type.

 

Decrypt

Cochez cette case si le fichier est crypté à l'aide du cryptage Amazon S3 côté client. Dans le champ Encryption key affiché, spécifiez la clé de chiffrement utilisée pour chiffrer le fichier. Notez que seule une enveloppe de clé AES 128 bits ou AES 256 bits encodée en base64 est supportée. Pour plus d'informations, consultez Loading Encrypted Data Files from Amazon S3 (en anglais).

Cette case est disponible lorsque l'option S3, EMR, ou Remote host est sélectionnée dans la liste Data source type.

 

Encoding

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

Cette liste est disponible lorsque l'option S3, EMR, ou Remote host est sélectionnée dans la liste Data source type.

 

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 métadonnées de traitement du Job, aussi bien au niveau du Job 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).

Scénario: 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.