Chargement de données depuis Amazon EMR - Amazon Redshift

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Chargement de données depuis Amazon EMR

Vous pouvez utiliser cette COPY commande pour charger des données en parallèle à partir d'un EMR cluster Amazon configuré pour écrire des fichiers texte dans le système de fichiers distribué Hadoop (HDFS) du cluster sous forme de fichiers à largeur fixe, de fichiers séparés par des caractères, de fichiers ou de fichiers formatés. CSV JSON

Processus de chargement des données depuis Amazon EMR

Cette section explique le processus de chargement des données depuis un EMR cluster Amazon. Les sections suivantes fournissent les informations détaillées dont vous avez besoin pour effectuer chaque étape.

Étape 1 : configurer les IAM autorisations

Les utilisateurs qui créent le EMR cluster Amazon et exécutent la COPY commande Amazon Redshift doivent disposer des autorisations nécessaires.

Pour configurer les IAM autorisations
  1. Ajoutez les autorisations suivantes pour l'utilisateur qui créera le EMR cluster Amazon.

    ec2:DescribeSecurityGroups ec2:RevokeSecurityGroupIngress ec2:AuthorizeSecurityGroupIngress redshift:DescribeClusters
  2. Ajoutez l'autorisation suivante pour le IAM rôle ou l'utilisateur qui exécutera la COPY commande.

    elasticmapreduce:ListInstances
  3. Ajoutez l'autorisation suivante au IAM rôle du EMR cluster Amazon.

    redshift:DescribeClusters

Étape 2 : créer un EMR cluster Amazon

La COPY commande charge des données à partir de fichiers sur le système de fichiers distribué Amazon EMR Hadoop ()HDFS. Lorsque vous créez le EMR cluster Amazon, configurez-le pour qu'il envoie des fichiers de données vers celui du clusterHDFS.

Pour créer un EMR cluster Amazon
  1. Créez un EMR cluster Amazon dans le même AWS Région en tant que cluster Amazon Redshift.

    Si le cluster Amazon Redshift se trouve dans unVPC, le EMR cluster Amazon doit appartenir au même VPC groupe. Si le cluster Amazon Redshift utilise le mode EC2 -Classic (c'est-à-dire qu'il n'est pas en mode aVPC), le EMR cluster Amazon doit également utiliser EC2 le mode -Classic. Pour plus d'informations, consultez la section Gestion des clusters dans un cloud privé virtuel (VPC) dans le guide de gestion Amazon Redshift.

  2. Configurez le cluster pour générer des fichiers de données vers celui du clusterHDFS. Les noms de HDFS fichiers ne doivent pas comporter d'astérisques (*) ni de points d'interrogation (?).

    Important

    Les noms de fichiers ne doivent pas comporter d’astérisque (*) ou de point d’interrogation ( ? ).

  3. Spécifiez Non pour l'option de terminaison automatique dans la configuration du EMR cluster Amazon afin que le cluster reste disponible pendant l'exécution de la COPY commande.

    Important

    Si l'un des fichiers de données est modifié ou supprimé avant la COPY fin, vous risquez d'avoir des résultats inattendus ou l'COPYopération peut échouer.

  4. Notez l'ID du cluster et le public principal DNS (le point de terminaison de l'EC2instance Amazon qui héberge le cluster). Vous allez utiliser ces informations dans les étapes ultérieures.

Étape 3 : Récupérer la clé publique de cluster Amazon Redshift et les adresses IP de nœud de cluster

Pour récupérer la clé publique de cluster et les adresses IP de nœud de cluster Amazon Redshift pour votre cluster à l’aide de la console
  1. Accédez à la console de gestion Amazon Redshift.

  2. Choisissez le lien Clusters dans le volet de navigation.

  3. Sélectionnez votre cluster dans la liste.

  4. Localisez le groupe de paramètres d'SSHingestion.

    Notez la Clé publique du cluster et les Adresses IP du nœud. Vous allez les utiliser dans les étapes ultérieures.

    SSH ingestion settings showing cluster public key and node IP addresses for leader and compute nodes.

    Vous utiliserez les adresses IP privées de l'étape 3 pour configurer l'EC2hôte Amazon afin qu'il accepte la connexion depuis Amazon Redshift.

Pour récupérer la clé publique du cluster et les adresses IP des nœuds de cluster de votre cluster à l'aide d'Amazon RedshiftCLI, exécutez la commande describe-clusters. Par exemple :

aws redshift describe-clusters --cluster-identifier <cluster-identifier>

La réponse inclura une ClusterPublicKey valeur et la liste des adresses IP privées et publiques, similaires à ce qui suit :

{ "Clusters": [ { "VpcSecurityGroups": [], "ClusterStatus": "available", "ClusterNodes": [ { "PrivateIPAddress": "10.nnn.nnn.nnn", "NodeRole": "LEADER", "PublicIPAddress": "10.nnn.nnn.nnn" }, { "PrivateIPAddress": "10.nnn.nnn.nnn", "NodeRole": "COMPUTE-0", "PublicIPAddress": "10.nnn.nnn.nnn" }, { "PrivateIPAddress": "10.nnn.nnn.nnn", "NodeRole": "COMPUTE-1", "PublicIPAddress": "10.nnn.nnn.nnn" } ], "AutomatedSnapshotRetentionPeriod": 1, "PreferredMaintenanceWindow": "wed:05:30-wed:06:00", "AvailabilityZone": "us-east-1a", "NodeType": "dc2.large", "ClusterPublicKey": "ssh-rsa AAAABexamplepublickey...Y3TAl Amazon-Redshift", ... ... }

Pour récupérer la clé publique du cluster et les adresses IP des nœuds de cluster de votre cluster à l'aide d'Amazon RedshiftAPI, utilisez l'DescribeClustersaction. Pour plus d'informations, consultez la section describe-clusters dans le guide Amazon CLI Redshift DescribeClustersou dans le guide Amazon Redshift. API

Étape 4 : ajouter la clé publique du cluster Amazon Redshift au fichier de clés autorisées de EC2 chaque hôte Amazon

Vous ajoutez la clé publique du cluster au fichier de clés autorisées de chaque hôte pour tous les nœuds du EMR cluster Amazon afin que les hôtes reconnaissent Amazon Redshift et acceptent la SSH connexion.

Pour ajouter la clé publique de cluster Amazon Redshift au fichier de clés autorisées de l’hôte
  1. Accédez à l'hôte à l'aide d'une SSH connexion.

    Pour plus d'informations sur la connexion à une instance en utilisantSSH, consultez Connect to Your Instance dans le guide de EC2 l'utilisateur Amazon.

  2. Copiez la clé publique Amazon Redshift depuis la console ou depuis le texte de CLI réponse.

  3. Copiez et collez le contenu de la clé publique dans le fichier /home/<ssh_username>/.ssh/authorized_keys de l’hôte. Incluez la chaîne complète, y compris le préfixe « ssh-rsa » et le suffixe « Amazon-Redshift ». Par exemple :

    ssh-rsa AAAACTP3isxgGzVWoIWpbVvRCOzYdVifMrh… uA70BnMHCaMiRdmvsDOedZDOedZ Amazon-Redshift

Étape 5 : Configurer les hôtes pour accepter toutes les adresses IP du cluster Amazon Redshift

Pour autoriser le trafic entrant des instances de l’hôte, modifiez le groupe de sécurité et ajoutez une règle de trafic entrant pour chacun nœud de cluster Amazon Redshift. Pour Type, sélectionnez SSH avec TCP protocole sur le port 22. Pour Source, saisissez les adresses IP privées du nœud de cluster Amazon Redshift que vous avez récupérées dans Étape 3 : Récupérer la clé publique de cluster Amazon Redshift et les adresses IP de nœud de cluster. Pour plus d'informations sur l'ajout de règles à un groupe EC2 de sécurité Amazon, consultez Autoriser le trafic entrant pour vos instances dans le guide de EC2l'utilisateur Amazon.

Étape 6 : Exécutez la COPY commande pour charger les données

Exécutez une COPY commande pour vous connecter au EMR cluster Amazon et chargez les données dans une table Amazon Redshift. Le EMR cluster Amazon doit continuer à fonctionner jusqu'à ce que la COPY commande soit terminée. Par exemple, ne configurez pas le cluster pour qu’il se termine automatiquement.

Important

Si l'un des fichiers de données est modifié ou supprimé avant la COPY fin, vous risquez d'avoir des résultats inattendus ou l'COPYopération peut échouer.

Dans la COPY commande, spécifiez l'ID du EMR cluster Amazon ainsi que le HDFS chemin et le nom du fichier.

COPY sales FROM 'emr://myemrclusterid/myoutput/part*' CREDENTIALS IAM_ROLE 'arn:aws:iam::0123456789012:role/MyRedshiftRole';

Vous pouvez utiliser l’astérisque comme caractère générique (*) et le point d’interrogation (?) dans le cadre de l’argument de nom de fichier. Par exemple, part* charge les fichiers part-0000, part-0001, et ainsi de suite. Si vous spécifiez uniquement un nom de dossier, COPY tente de charger tous les fichiers du dossier.

Important

Si vous utilisez des caractères génériques ou si vous utilisez uniquement le nom du dossier, vérifiez qu'aucun fichier indésirable ne sera chargé ou que la COPY commande échouera. Par exemple, certains processus peuvent écrire un fichier journal sur le dossier de sortie.