Chargement de données à partir d’une table Amazon DynamoDB - 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 à partir d’une table Amazon DynamoDB

Vous pouvez utiliser la commande COPY pour charger une table avec les données d’une seule table Amazon DynamoDB.

Important

La table Amazon DynamoDB qui fournit les données doit être créée dans la AWS même région que votre cluster, sauf si vous utilisez REGION l'option permettant de spécifier la région dans laquelle se AWS trouve la table Amazon DynamoDB.

La commande COPY utilise l’architecture de traitement hautement parallèle (MPP) d’Amazon Redshift pour lire et charger les données en parallèle à partir d’une table Amazon DynamoDB. Vous pouvez profiter au maximum du traitement parallèle en définissant les styles de distribution de vos tables Amazon Redshift. Pour plus d'informations, consultez Utilisation des styles de distribution de données.

Important

Lorsque la commande COPY lit des données à partir de la table Amazon DynamoDB, le transfert de données qui en résulte fait partie du débit alloué de la table.

Pour éviter de consommer des quantités excessives de débit alloué en lecture, nous vous recommandons de ne pas charger les données à partir des tables Amazon DynamoDB qui se trouvent dans des environnements de production. Si vous chargez les données à partir des tables de production, nous vous recommandons de définir l’option READRATIO avec une valeur beaucoup plus basse que le pourcentage moyen de débit alloué inutilisé. Un paramètre READRATIO bas contribue à réduire les problèmes de limitation. Pour utiliser la totalité du débit alloué d’une table Amazon DynamoDB, définissez READRATIO avec la valeur 100.

La commande COPY met en correspondance les noms d’attribut des éléments extraits de la table Amazon DynamoDB et les noms de colonne d’une table Amazon Redshift existante en utilisant les règles suivantes :

  • Les colonnes de la table Amazon Redshift sont mises en correspondance sans sensibilité à la casse avec les attributs d’élément Amazon DynamoDB. Si un élément de la table DynamoDB contient plusieurs attributs qui diffèrent uniquement par la casse, comme Prix et PRIX, la commande COPY échoue.

  • Les colonnes de la table Amazon Redshift qui ne correspondent pas à un attribut de la table Amazon DynamoDB sont chargées en tant que NULL ou vides, en fonction de la valeur spécifiée par l’option EMPTYASNULL de la commande COPY.

  • Les attributs Amazon DynamoDB qui ne correspondent pas à une colonne de la table Amazon Redshift sont ignorés. Les attributs sont lus avant d’être mis en correspondance, et à fortiori les attributs ignorés consomment une partie du débit alloué de la table.

  • Seuls les attributs Amazon DynamoDB avec les types de données STRING et NUMBER sont pris en charge. Les types de données Amazon DynamoDB BINARY et SET ne sont pas pris en charge. Si une commande COPY tente de charger un attribut avec un type de données non pris en charge, la commande échoue. Si l’attribut ne correspond pas à une colonne de table Amazon Redshift, COPY n’essaie pas de le charger et aucune erreur n’est déclenchée.

La commande COPY utilise la syntaxe suivante pour charger les données d’une table Amazon DynamoDB :

copy <redshift_tablename> from 'dynamodb://<dynamodb_table_name>' authorization readratio '<integer>';

Les valeurs d'autorisation sont les AWS informations d'identification nécessaires pour accéder à la table Amazon DynamoDB. Si ces informations d’identification correspondent à un utilisateur, cet utilisateur doit avoir la permission d’exécuter les opérations SCAN et DESCRIBE sur la table Amazon DynamoDB en cours de chargement.

Les valeurs d'autorisation fournissent l' AWS autorisation dont votre cluster a besoin pour accéder à la table Amazon DynamoDB. Elle doit comprendre l’autorisation d’exécuter SCAN et DESCRIBE sur la table Amazon DynamoDB qui est en cours de chargement. Pour plus d’informations sur les autorisations requises, consultez Autorisations IAM pour les commandes COPY, UNLOAD et CREATE LIBRARY. La méthode d’authentification recommandée est celle qui consiste à spécifier le paramètre IAM_ROLE et à fournir l’Amazon Resource Name (ARN) d’un rôle IAM avec les autorisations nécessaires. Pour plus d'informations, consultez Contrôle d’accès basé sur les rôles.

Pour vous authentifier à l’aide du paramètre IAM_ROLE, remplacez <aws-account-id> et <role-name>, comme indiqué dans la syntaxe suivante.

IAM_ROLE 'arn:aws:iam::<aws-account-id>:role/<role-name>'

L’authentification à l’aide d’un rôle IAM est présentée dans l’exemple suivant.

copy favoritemovies from 'dynamodb://ProductCatalog' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole';

Pour plus d’informations sur d’autres options d’autorisation, consultez Paramètres d’autorisation

Si vous voulez valider vos données sans charger le tableau, utilisez l’option NOLOAD avec la commande COPY.

L'exemple suivant charge la table FAVORITEMOVIES avec les données de la table DynamoDB. my-favorite-movies-table L’activité de lecture peut consommer jusqu’à 50 % du débit alloué.

copy favoritemovies from 'dynamodb://my-favorite-movies-table' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' readratio 50;

Pour optimiser le débit, la commande COPY charge les données d’une table Amazon DynamoDB en parallèle sur les nœuds de calcul du cluster.

Débit alloué avec compression automatique

Par défaut, la commande COPY applique la compression automatique chaque fois que vous spécifiez une table cible vide sans encodage de compression. La compression automatique analyse initialement un grand nombre de lignes de la table Amazon DynamoDB. La taille de l’échantillon repose sur la valeur du paramètre COMPROWS. La valeur par défaut est de 100 000 lignes par tranche.

Après le prélèvement, les lignes de l’exemple sont ignorées et la totalité de la table est chargée. Par conséquent, la plupart des lignes sont lues deux fois. Pour plus d’informations sur le fonctionnement de la compression, consultez Chargement des tables avec compression automatique.

Important

Lorsque la commande COPY lit les données de la table Amazon DynamoDB, y compris les lignes utilisées pour les prélèvements, le transfert des données obtenues fait partie du débit alloué de la table.

Chargement de données multioctets à partir d’Amazon DynamoDB

Si vos données incluent des caractères non-ASCII codés sur plusieurs octets (par exemple, les caractères chinois ou cyrilliques), vous devez charger les données dans des colonnes VARCHAR. Le type de données VARCHAR prend en charge les caractères UTF-8 codés sur quatre octets, mais le type de données CHAR n’accepte que les caractères ASCII codés sur un octet. Vous ne pouvez pas charger de caractères codés sur cinq octets ou plus dans des tables Amazon Redshift. Pour plus d’informations sur CHAR et VARCHAR, consultez Types de données.