Connecteur Amazon Athena Google Cloud Storage - Amazon Athena

Connecteur Amazon Athena Google Cloud Storage

Le connecteur Amazon Athena Google Cloud Storage permet à Amazon Athena d’exécuter des requêtes sur des fichiers Parquet et CSV stockés dans un compartiment Google Cloud Storage (GCS). Après avoir regroupé un ou plusieurs fichiers Parquet ou CSV dans un dossier partitionné ou non partitionné dans un compartiment GCS, vous pouvez les organiser dans une table de base de données AWS Glue.

Ce connecteur peut être enregistré auprès du Catalogue de données Glue 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 aux niveaux catalogue, base de données, table, colonne, ligne et balise. Ce connecteur utilise les connexions Glue 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 le AWS Serverless Application Repository doit avoir un accès en lecture au AWS Glue Data Catalog dans Lake Formation.

Pour obtenir un article expliquant comment utiliser Athena pour exécuter des requêtes sur des fichiers Parquet ou CSV dans un compartiment GCS, consultez l’article Use Amazon Athena to query data stored in Google Cloud Platform dans le blog AWS Big Data Blog.

Prérequis

Limitations

  • Les opérations DDL d’écriture ne sont pas prises en charge.

  • Toutes les limites Lambda pertinentes. Pour plus d’informations, consultez la section Quotas Lambda du Guide du développeur AWS Lambda.

  • Actuellement, le connecteur prend uniquement en charge le type VARCHAR pour les colonnes de partition (string ou varchar dans un schéma de table AWS Glue). Les autres types de champs de partition génèrent des erreurs lorsque vous les interrogez dans Athena.

Conditions

Les termes suivants se rapportent au connecteur GCS.

  • Gestionnaire – Un gestionnaire Lambda qui accède à votre compartiment GCS. Un gestionnaire peut être destiné aux métadonnées ou aux enregistrements de données.

  • Gestionnaire de métadonnées – Un gestionnaire Lambda qui extrait les métadonnées de votre compartiment GCS.

  • Gestionnaire d’enregistrements – Un gestionnaire Lambda qui extrait les enregistrements de données de votre compartiment GCS.

  • Gestionnaire de composites – Un gestionnaire Lambda qui extrait les métadonnées et les enregistrements de données de votre compartiment GCS.

Types de fichier pris en charge

Le connecteur GCS prend en charge les types de fichiers Parquet et CSV.

Note

Assurez-vous de ne pas placer les fichiers CSV et Parquet dans le même compartiment ou chemin GCS. Cela peut générer une erreur d’exécution lors d’une tentative de lecture des fichiers Parquet au format CSV ou vice versa.

Paramètres

Utilisez les paramètres de cette section pour configurer le connecteur GCS.

Note

Les connecteurs de source de données Athena créés le 3 décembre 2024 et les versions ultérieures utilisent des connexions AWS Glue.

Les noms et définitions de paramètres répertoriés ci-dessous concernent les connecteurs de source de données Athena créés avant le 3 décembre 2024. Ces noms et définitions peuvent différer de ceux des propriétés de connexion AWS Glue correspondantes. À compter du 3 décembre 2024, utilisez les paramètres ci-dessous uniquement lorsque vous déployez manuellement une version antérieure d’un connecteur de source de données Athena.

Nous vous recommandons de configurer un connecteur GCS en utilisant un objet des connexions Glue. Pour ce faire, définissez la variable d’environnement glue_connection du connecteur GCS Lambda sur le nom de la connexion Glue à utiliser.

Propriétés des connexions Glue

Utilisez la commande suivante afin d’obtenir le schéma d’un objet de connexion Glue. Ce schéma contient tous les paramètres que vous pouvez utiliser pour contrôler votre connexion.

aws glue describe-connection-type --connection-type GOOGLECLOUDSTORAGE

Propriétés d’environnement Lambda

  • glue_connection – Spécifie le nom de la connexion Glue associée au connecteur fédéré.

Note
  • Tous les connecteurs qui utilisent des connexions Glue doivent utiliser AWS Secrets Manager pour stocker les informations d’identification.

  • Le connecteur GCS créé à l’aide des connexions Glue ne prend pas en charge l’utilisation d’un gestionnaire de multiplexage.

  • Le connecteur GCS créé à l’aide des connexions Glue prend uniquement en charge ConnectionSchemaVersion 2.

  • spill_bucket – Spécifie le compartiment Amazon S3 pour les données qui dépassent les limites des fonctions Lambda.

  • spill_prefix – (Facultatif) Par défaut, il s’agit d’un sous-dossier dans le spill_bucket spécifié appelé athena-federation-spill. Nous vous recommandons de configurer un cycle de vie de stockage Amazon S3 à cet endroit pour supprimer les déversements supérieurs à un nombre de jours ou d’heures prédéterminé.

  • spill_put_request_headers – (Facultatif) Une carte codée au format JSON des en-têtes et des valeurs des demandes pour la demande putObject Amazon S3 utilisée pour le déversement (par exemple, {"x-amz-server-side-encryption" : "AES256"}). Pour les autres en-têtes possibles, consultez PutObject dans la Référence d'API Amazon Simple Storage Service.

  • kms_key_id – (Facultatif) Par défaut, toutes les données déversées vers Amazon S3 sont chiffrées à l'aide du mode de chiffrement authentifié AES-GCM et d'une clé générée de manière aléatoire. Pour que votre fonction Lambda utilise des clés de chiffrement plus puissantes générées par KMS, comme a7e63k4b-8loc-40db-a2a1-4d0en2cd8331, vous pouvez spécifier l’ID d’une clé KMS.

  • disable_spill_encryption – (Facultatif) Lorsque la valeur est définie sur True, le chiffrement des déversements est désactivé. La valeur par défaut est False afin que les données déversées vers S3 soient chiffrées à l’aide d’AES-GCM, soit à l’aide d’une clé générée de manière aléatoire soit à l’aide de KMS pour générer des clés. La désactivation du chiffrement des déversements peut améliorer les performances, surtout si votre lieu de déversement utilise le chiffrement côté serveur.

  • secret_manager_gcp_creds_name – Le nom du secret dans AWS Secrets Manager qui contient vos informations d’identification GCS au format JSON (par exemple, GoogleCloudPlatformCredentials).

Configuration de bases de données et de tables dans AWS Glue

La capacité intégrée d’inférence de schéma du connecteur GCS étant limitée, nous vous recommandons d’utiliser AWS Glue pour vos métadonnées. Les procédures suivantes portent sut la création d’une base de données et d’une table dans AWS Glue, auxquelles vous pouvez accéder depuis Athena.

Création d'une base de données dans AWS Glue

Vous pouvez utiliser la console AWS Glue pour créer une base de données et l’utiliser avec le connecteur GCS.

Pour créer une base de données dans AWS Glue
  1. Connectez-vous à la AWS Management Console et ouvrez la console AWS Glue à l’adresse https://console.aws.amazon.com/glue/.

  2. Dans le volet de navigation, sélectionnez Databases (Bases de données).

  3. Choisissez Ajouter une base de données.

  4. Dans le champ Name (Nom), saisissez le nom de la base de données que vous souhaitez utiliser avec le connecteur GCS.

  5. Dans Emplacement, spécifiez google-cloud-storage-flag. Cet emplacement indique au connecteur GCS que la base de données AWS Glue contient des tables pour les données GCS à interroger dans Athena. Le connecteur reconnaît les bases de données qui présentent cet indicateur dans Athena et ignore les bases de données qui ne le présentent pas.

  6. Choisissez Créer une base de données.

Création d’une table dans AWS Glue

Vous pouvez maintenant créer une table pour la base de données. Lorsque vous créez une table AWS Glue à utiliser avec le connecteur GCS, vous devez spécifier des métadonnées supplémentaires.

Pour créer une table dans la console AWS Glue
  1. Dans le volet de navigation de la console AWS Glue, sélectionnez Tables.

  2. Sur la page Tables, sélectionnez Add table (Ajouter une table).

  3. Sur la page Set table properties (Définir les propriétés de la table), saisissez les informations suivantes.

    • Name (Nom) – Un nom unique pour la table.

    • Database (Base de données) – Sélectionnez la base de données AWS Glue que vous avez créée pour le connecteur GCS.

    • Include path (Inclure le chemin) – Dans la section Data store (Magasin de données), pour Include path (Inclure le chemin), saisissez l’emplacement d’URI pour GCS dont le préfixe est gs:// (par exemple, gs://gcs_table/data/). Si vous disposez d’un ou de plusieurs dossiers de partition, ne les incluez pas dans le chemin.

      Note

      Lorsque vous saisissez le chemin de table non s3://, la console AWS Glue affiche une erreur. Vous pouvez ignorer cette erreur. La création de la table réussira.

    • Data format (Format de données) – Pour Classification, sélectionnez CSV ou Parquet.

  4. Choisissez Suivant.

  5. Sur la page Choose or define schema (Choisir ou définir un schéma), il est vivement recommandé de définir un schéma de table, mais cela n’est pas obligatoire. Si vous ne définissez pas de schéma, le connecteur GCS tente d’en déduire un pour vous.

    Effectuez l’une des actions suivantes :

    • Si vous souhaitez que le connecteur GCS tente de déduire un schéma pour vous, sélectionnez Next (Suivant), puis Create (Créer).

    • Pour définir vous-même un schéma, suivez les étapes décrites dans la section suivante.

Définition d’un schéma de table dans AWS Glue

Le processus de définition d’un schéma de table dans AWS Glue comporte plus d’étapes, mais cela vous permet de mieux contrôler le processus de création de tables.

Pour définir un schéma pour votre table dans AWS Glue
  1. Sur la page Choose or define schema (Choisir ou définir un schéma), sélectionnez Add (Ajouter).

  2. Dans la boîte de dialogue Add schema entry (Ajouter une entrée de schéma), saisissez un nom de colonne et un type de données.

  3. Pour désigner la colonne en tant que colonne de partition, sélectionnez l’option Set as partition key (Définir en tant que clé de partition).

  4. Sélectionnez Save (Enregistrer) pour enregistrer la colonne.

  5. Sélectionnez Add (Ajouter) pour ajouter une autre colonne.

  6. Lorsque vous avez terminé d’ajouter des colonnes, sélectionnez Next (Suivant).

  7. Sur la page Review and create (Examiner et créer), examinez la table, puis sélectionnez Create (Créer).

  8. Si votre schéma contient des informations de partition, suivez les étapes de la section suivante pour ajouter un modèle de partition aux propriétés de la table dans AWS Glue.

Ajout d’un modèle de partition aux propriétés de la table dans AWS Glue

Si vos compartiments GCS comportent des partitions, vous devez ajouter le modèle de partition aux propriétés de la table dans AWS Glue.

Pour ajouter des informations de partition aux propriétés de la table AWS Glue
  1. Sur la page détaillée de la table que vous avez créée dans AWS Glue, sélectionnez Actions, puis Edit table (Modifier la table).

  2. Sur la page Edit table (Modifier le table), faites défiler l’écran vers le bas jusqu’à la section Table properties (Propriétés de la table).

  3. Sélectionnez Add (Ajouter) pour ajouter une clé de partition.

  4. Pour Key (Clé), saisissez partition.pattern. Cette clé définit le modèle de chemin de dossier.

  5. Dans le champ Value (Valeur), saisissez un modèle de chemin de dossier tel que StateName=${statename}/ZipCode=${zipcode}/, statename et zipcode entourés par ${} étant des noms de colonne de partition. Le connecteur GCS prend en charge les schémas de partition Hive et non Hive.

  6. Lorsque vous avez terminé, choisissez Save.

  7. Pour afficher les propriétés de la table que vous venez de créer, sélectionnez l’onglet Advanced properties (Propriétés avancées).

À ce stade, vous pouvez accéder à la console Athena. La base de données et la table que vous avez créées dans AWS Glue peuvent être interrogées dans Athena.

Prise en charge du type de données

Les tables suivantes indiquent les types de données pris en charge pour les fichiers CSV et Parquet.

CSV

Nature des données Type de données inféré
Les données ressemblent à un nombre BIGINT
Les données ressemblent à une chaîne VARCHAR
Les données ressemblent à une virgule flottante (flottante, double ou décimale) DOUBLE
Les données ressemblent à une date Horodatage
Données contenant des valeurs true/false (vrai/faux) BOOL

Parquet

PARQUET Athena (flèche)
BINAIRE VARCHAR
BOOLEAN BOOL
DOUBLE DOUBLE
ENUM VARCHAR
FIXED_LEN_BYTE_ARRAY DECIMAL
FLOAT FLOAT (32 bits)
INT32
  1. INT32

  2. DATEDAY (lorsque le type logique de la colonne Parquet est DATE)

INT64
  1. INT64

  2. TIMESTAMP (lorsque le type logique de la colonne Parquet est TIMESTAMP)

INT96 Horodatage
MAP MAP
STRUCT STRUCT
LIST LIST

Autorisations nécessaires

Pour plus de détails sur les politiques IAM requises par ce connecteur, reportez-vous à la section Policies du fichier athena-gcs.yaml. La liste suivante résume les autorisations requises.

  • 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 aboutir à un échec rapide lorsque la requête Athena en amont est terminée.

  • AWS Glue Data Catalog – Le connecteur GCS nécessite un accès en lecture seule au AWS Glue Data Catalog pour obtenir des informations de schéma.

  • CloudWatch Logs – Le connecteur nécessite un accès à CloudWatch Logs pour stocker les journaux.

Performances

Lorsque le schéma de la table contient des champs de partition et que la propriété de la table partition.pattern est correctement configurée, vous pouvez inclure le champ de partition dans la clause WHERE de vos requêtes. Pour de telles requêtes, le connecteur GCS utilise les colonnes de partition pour affiner le chemin du dossier GCS et éviter d’analyser des fichiers inutiles dans les dossiers GCS.

Pour les jeux de données Parquet, la sélection d’un sous-ensemble de colonnes permet de réduire la quantité de données analysées. Cela se traduit généralement par un temps d’exécution des requêtes plus court lorsque la projection de colonnes est appliquée.

Pour les jeux de données CSV, la projection de colonnes n’est pas prise en charge et ne réduit pas la quantité de données analysées.

Les clauses LIMIT réduisent la quantité de données analysées, mais si vous ne fournissez pas de prédicat, vous devez vous attendre à ce que les requêtes SELECT avec une clause LIMIT analysent au moins 16 Mo de données. Le connecteur GCS analyse une plus grande quantité de données pour les jeux de données plus volumineux que pour les jeux de données plus petits, indépendamment de la clause LIMIT appliquée. Par exemple, la requête SELECT * LIMIT 10000 analyse une plus grande quantité de données pour un jeu de données sous-jacent plus volumineux que pour un jeu de données sous-jacent plus petit.

Informations de licence

En utilisant ce connecteur, vous reconnaissez l'inclusion de composants tiers, dont la liste se trouve dans le fichier pom.xml pour ce connecteur, et vous acceptez les conditions des licences tierces respectives fournis dans le fichier LICENSE.txt sur GitHub.com.

Ressources supplémentaires

Pour plus d'informations sur ce connecteur, consultez le site correspondant sur GitHub.com.