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.
Connecteur Amazon Athena pour DynamoDB
Le connecteur Amazon Athena DynamoDB permet à Amazon Athena de communiquer avec DynamoDB afin que vous puissiez requêter vos tables avec SQL. Les opérations d'écriture telles que INSERT INTO ne sont pas prises en charge.
Ce connecteur peut être enregistré auprès de Glue Data Catalog en tant que catalogue fédéré. Il prend en charge les contrôles d'accès aux données définis dans Lake Formation au niveau du catalogue, de la base de données, de la table, des colonnes, des lignes et des balises. Ce connecteur utilise Glue Connections pour centraliser les propriétés de configuration dans Glue.
Si Lake Formation est activé sur votre compte, le rôle IAM de votre connecteur Lambda fédéré Athena que vous avez déployé dans AWS Serverless Application Repository le doit avoir un accès en lecture dans Lake Formation au. AWS Glue Data Catalog
Prérequis
Déployez le connecteur sur votre Compte AWS à l’aide de la console Athena ou du AWS Serverless Application Repository. Pour plus d’informations, consultez Création d'une connexion à une source de données ou Utilisez le AWS Serverless Application Repository pour déployer un connecteur de source de données.
Limites
Si vous migrez vos connexions DynamoDB vers Glue Catalog et Lake Formation, seuls les noms de table et de colonne en minuscules seront reconnus.
Paramètres
Utilisez les paramètres de cette section pour configurer le connecteur DynamoDB.
Configuration de bases de données et de tables dans AWS Glue
La capacité d'inférence de schéma intégrée du connecteur étant limitée, vous souhaiterez peut-être l'utiliser AWS Glue pour les métadonnées. Pour ce faire, vous devez disposer d'une base de données et d'une table AWS Glue. Pour les utiliser avec DynamoDB, vous devez modifier leurs propriétés.
Pour modifier les propriétés de base de données dans la AWS Glue console
Connectez-vous à la AWS Glue console AWS Management Console et ouvrez-la à l'adresse https://console.aws.amazon.com/glue/
. -
Dans le volet de navigation, développez le catalogue de données, puis choisissez Databases.
Sur la page Databases (Bases de données), vous pouvez modifier une base de données existante ou sélectionner Add database (Ajouter une base de données) pour en créer une.
-
Dans la liste des bases de données, sélectionnez le lien de la base de données à modifier.
-
Choisissez Modifier.
-
Sur la page Mettre à jour une base de données, sous Paramètres de base de données, dans Emplacement, ajoutez la chaîne
dynamo-db-flag
. Ce mot clé indique que la base de données contient des tables que le connecteur Athena DynamoDB utilise pour des métadonnées supplémentaires et qu'elle est requise pour les bases de données autres que. AWS Gluedefault
La propriétédynamo-db-flag
permet de filtrer les bases de données des comptes comprenant de nombreuses bases de données. -
Choisissez Update Database (Mettre à jour la base de données).
Pour modifier les propriétés du tableau dans la AWS Glue console
Connectez-vous à la AWS Glue console AWS Management Console et ouvrez-la à l'adresse https://console.aws.amazon.com/glue/
. -
Dans le volet de navigation, développez le catalogue de données, puis choisissez Tables.
-
Sur la page Tables, dans la liste des tables, choisissez le nom lié de la table que vous souhaitez modifier.
-
Sélectionnez Actions, puis Edit table (Modifier la table).
-
Sur la page Edit table (Modifier la table), dans la section Table properties (Propriétés de la table), ajoutez les propriétés de table suivantes, selon les besoins. Si vous utilisez le robot AWS Glue DynamoDB, ces propriétés sont définies automatiquement.
-
dynamoDB— Chaîne indiquant au connecteur Athena DynamoDB que la table peut être utilisée pour des métadonnées supplémentaires. Saisissez la chaîne
dynamodb
dans les propriétés de la table, dans un champ nommé classification (correspondance exacte).Note
La page Définir les propriétés de la table qui fait partie du processus de création de table dans la AWS Glue console comporte une section Format de données avec un champ Classification. Vous ne pouvez pas saisir ou choisir
dynamodb
ici. Après avoir créé votre table, suivez plutôt les étapes pour modifier la table et pour saisirclassification
etdynamodb
sous forme de paire clé-valeur dans la section Propriétés de la table. -
sourceTable – Propriété de table facultative qui définit le nom de la table source dans DynamoDB. Utilisez cette option si les règles de dénomination des AWS Glue tables vous empêchent de créer une AWS Glue table portant le même nom que votre table DynamoDB. Par exemple, les majuscules ne sont pas autorisées dans les noms de AWS Glue tables, mais elles le sont dans les noms de tables DynamoDB.
-
columnMapping – Propriété de table facultative qui définit les mappages de noms de colonnes. Utilisez cette option si les règles de dénomination des AWS Glue colonnes vous empêchent de créer une AWS Glue table portant les mêmes noms de colonne que votre table DynamoDB. Par exemple, les majuscules ne sont pas autorisées dans les noms de AWS Glue colonnes, mais le sont dans les noms de colonne DynamoDB. La valeur de la propriété devrait être au format col1=Col1,col2=Col2. Notez que le mappage des colonnes s'applique uniquement aux noms de colonnes de niveau supérieur et non aux champs imbriqués.
-
defaultTimeZone— Propriété de table facultative appliquée à
date
ou àdatetime
des valeurs n'ayant pas de fuseau horaire explicite. La définition de cette valeur est recommandée pour éviter tout écart entre le fuseau horaire par défaut de la source de données et le fuseau horaire de la session Athena. -
datetimeFormatMapping— Propriété de table facultative qui spécifie le
datetime
formatdate
ou à utiliser lors de l'analyse des données d'une colonne de type AWS Gluedate
ortimestamp
. Si cette propriété n’est pas spécifiée, le connecteur tente de déduireun format ISO-8601. Si le connecteur ne peut pas déduire le format date
oudatetime
ni analyser la chaîne brute, la valeur est alors omise du résultat.La valeur
datetimeFormatMapping
doit être au formatcol1=someformat1,col2=someformat2
. Voici quelques exemples de formats :yyyyMMdd'T'HHmmss ddMMyyyy'T'HH:mm:ss
Si votre colonne contient des valeurs
date
oudatetime
sans fuseau horaire et que vous souhaitez utiliser la colonne dans la clauseWHERE
, définissez la propriétédatetimeFormatMapping
pour la colonne.
-
-
Si vous définissez manuellement vos colonnes, assurez-vous que vous utilisez les types de données appropriés. Si vous avez utilisé un crawler, validez les colonnes et les types qu’il a découverts.
-
Choisissez Save (Enregistrer).
Autorisations nécessaires
Pour plus de détails sur les politiques IAM requises par ce connecteur, reportez-vous à la section Policies
du fichier athena-dynamodb.yaml
-
Amazon S3 write access (Accès en écriture Amazon S3) – Le connecteur nécessite un accès en écriture à un emplacement dans Amazon S3 pour déverser les résultats à partir de requêtes volumineuses.
-
Athena GetQueryExecution — Le connecteur utilise cette autorisation pour échouer rapidement lorsque la requête Athena en amont est terminée.
-
AWS Glue Data Catalog— Le connecteur DynamoDB nécessite un accès en lecture seule pour obtenir des informations sur AWS Glue Data Catalog le schéma.
-
CloudWatch Journaux : le connecteur a besoin d'accéder aux CloudWatch journaux pour stocker les journaux.
-
Accès en lecture DynamoDB – Le connecteur utilise les opérations d’API
DescribeTable
,ListSchemas
,ListTables
,Query
etScan
.
Performances
Le connecteur Athena DynamoDB prend en charge les examens parallèles et les tentatives de transfert de prédicats dans le cadre de ses requêtes DynamoDB. Un prédicat de clé de hachage avec des valeurs distinctes X
se traduit par des appels de requête X
à DynamoDB. Tous les autres scénarios de prédicat se traduisent par un nombre Y
d’appels d’analyse, où Y
est déterminé de manière heuristique en fonction de la taille de votre table et de son débit alloué. Cependant, la sélection d'un sous-ensemble de colonnes entraîne parfois un délai d'exécution plus long des requêtes.
Les clauses LIMIT
et les prédicats simples sont poussés vers le bas, ce qui peut réduire la quantité de données analysées et entraîner une diminution du délai d'exécution des requêtes.
Clauses LIMIT
Une instruction LIMIT N
réduit les données analysées par la requête. Grâce à la poussée vers le bas LIMIT N
, le connecteur renvoie uniquement des lignes N
à Athena.
Prédicats
Un prédicat est une expression contenue dans la clause WHERE
d'une requête SQL qui prend une valeur booléenne et filtre les lignes en fonction de plusieurs conditions. Le connecteur Athena DynamoDB peut combiner ces expressions et les pousser directement vers DynamoDB pour améliorer la fonctionnalité et réduire la quantité de données analysées.
Les opérateurs du connecteur Athena DynamoDB suivants prennent en charge la poussée vers le bas de prédicats :
-
Booléen : AND
-
Égalité : EQUAL, NOT_EQUAL, LESS_THAN, LESS_THAN_OR_EQUAL, GREATER_THAN, GREATER_THAN_OR_EQUAL, IS_NULL
Exemple de poussée combinée vers le bas
Pour améliorer les capacités de requête, combinez les types de poussée vers le bas, comme dans l'exemple suivant :
SELECT * FROM my_table WHERE col_a > 10 and col_b < 10 LIMIT 10
Pour un article sur l'utilisation de la poussée vers le bas de prédicats pour améliorer les performances des requêtes fédérées, y compris DynamoDB, consultez Améliorer les requêtes fédérées avec la poussée vers le bas de prédicats dans Amazon Athena
Requêtes directes
Le connecteur DynamoDB prend en charge les requêtes passthrough et utilise la syntaxe PartiQL. L'opération d'API GetItemDynamoDB n'est pas prise en charge. Pour plus d'informations sur l'interrogation de DynamoDB à l'aide de PartiQL, consultez les instructions PartiQL select pour DynamoDB dans le manuel Amazon DynamoDB Developer Guide.
Pour utiliser des requêtes directes avec DynamoDB, utilisez la syntaxe suivante :
SELECT * FROM TABLE( system.query( query => '
query_string
' ))
L'exemple de requête DynamoDB passthrough suivant utilise PartiQL pour renvoyer la liste des appareils Fire TV Stick dont la propriété est postérieure au 24/12/22. DateWatched
SELECT * FROM TABLE( system.query( query => 'SELECT Devices FROM WatchList WHERE Devices.FireStick.DateWatched[0] > '12/24/22'' ))
Résolution des problèmes
Plusieurs filtres sur une colonne de clé de tri
Message d'erreur : ne KeyConditionExpressions doit contenir qu'une seule condition par clé
Cause : ce problème peut se produire dans la version 3 du moteur Athena dans les requêtes comportant à la fois un filtre de limite inférieure et supérieure sur une colonne de clé de tri DynamoDB. DynamoDB ne prenant en charge qu'une seule condition de filtre sur une clé de tri, une erreur est générée lorsque le connecteur tente de pousser vers le bas une requête sur laquelle les deux conditions sont appliquées.
Solution : mettre à jour le connecteur vers la version 2023.11.1 ou ultérieure. Pour obtenir des instructions sur la mise à jour d'un connecteur, consultez Mettre à jour un connecteur de source de données.
Coûts
Les coûts d'utilisation du connecteur dépendent des AWS ressources sous-jacentes utilisées. Les requêtes utilisant des scans pouvant consommer un grand nombre d'unités de capacité de lecture (RCUs)
Ressources supplémentaires
-
Pour une introduction à l'utilisation du connecteur Amazon Athena DynamoDB, consultez Accéder aux tables Amazon DynamoDB, les interroger et les joindre à l'aide d'Athena dans le guide Modèles de recommandations AWS .
-
Pour un article expliquant comment utiliser le connecteur Athena DynamoDB pour interroger des données dans DynamoDB avec SQL et visualiser des informations sur Amazon, consultez le billet de blog sur le Big AWS Data Visualize Amazon DynamoDB insights in QuickSight Amazon à l'aide du connecteur Amazon Athena DynamoDB
et. QuickSight AWS Glue Pour plus d'informations sur ce connecteur, rendez-vous sur le site correspondant
sur GitHub .com.