Créer des ensembles de données fédérés AWS Glue
Ce document explique comment créer dans BigQuery un ensemble de données fédéré associé à une base de données existante dans AWS Glue.
Un ensemble de données fédéré est une connexion entre BigQuery et une source de données externe au niveau de l'ensemble de données. Les tables d'un ensemble de données fédéré sont automatiquement renseignées à partir des tables de la source de données externe correspondante. Vous pouvez interroger ces tables directement dans BigQuery, mais vous ne pouvez pas effectuer de modifications, d'ajouts ni de suppressions. Cependant, toutes les mises à jour que vous effectuez dans la source de données externe sont automatiquement répercutées dans BigQuery.
Avant de commencer
Vérifiez que vous disposez d'une connexion pour accéder aux données AWS Glue.
Pour créer ou modifier une connexion, consultez la section Se connecter à Amazon S3 et incluez l'instruction de stratégie supplémentaire suivante pour AWS Glue dans votre règle AWS Identity and Access Management pour BigQuery :
{ "Effect": "Allow", "Action": [ "glue:GetDatabase", "glue:GetTable", "glue:GetTables", "glue:GetPartitions" ], "Resource": [ "arn:aws:glue:REGION:ACCOUNT_ID:catalog", "arn:aws:glue:REGION:ACCOUNT_ID:database/DATABASE_NAME", "arn:aws:glue:REGION:ACCOUNT_ID:table/DATABASE_NAME/*" ] }
Remplacez les éléments suivants :
REGION
: région AWS, par exempleus-east-1
ACCOUNT_ID:
: ID de compte AWS à 12 chiffresDATABASE_NAME
: nom de la base de données AWS Glue
Autorisations requises
Pour obtenir les autorisations nécessaires pour créer un ensemble de données fédéré, demandez à votre administrateur de vous accorder le rôle IAM Administrateur BigQuery (roles/bigquery.admin
).
Pour en savoir plus sur l'attribution de rôles, consultez la section Gérer les accès.
Ce rôle prédéfini contient les autorisations requises pour créer un ensemble de données fédéré. Pour connaître les autorisations exactes requises, développez la section Autorisations requises :
Autorisations requises
Les autorisations suivantes sont requises pour créer un ensemble de données fédéré :
-
bigquery.datasets.create
-
bigquery.connections.use
-
bigquery.connections.delegate
Vous pouvez également obtenir ces autorisations avec des rôles personnalisés ou d'autres rôles prédéfinis.
Pour plus d'informations sur les rôles et les autorisations IAM dans BigQuery, consultez la page Présentation d'IAM.
Créer un ensemble de données fédéré
Pour créer un ensemble de données fédéré, procédez comme suit :
bq
Dans un environnement de ligne de commande, créez un ensemble de données à l'aide de la commande bq mk
:
bq --location=LOCATION mk --dataset \ --external_source aws-glue://AWS_GLUE_SOURCE \ --connection_id PROJECT_ID.CONNECTION_LOCATION.CONNECTION_NAME \ DATASET_NAME
Remplacez les éléments suivants :
LOCATION
: emplacement de votre nouvel ensemble de données dans BigQuery, par exemple,aws-us-east-1
. Une fois que vous avez créé un ensemble de données, vous ne pouvez plus modifier son emplacement. Vous pouvez définir une valeur d'emplacement par défaut à l'aide du fichier.bigqueryrc
.AWS_GLUE_SOURCE
: nom de ressource Amazon (ARN) de la base de données AWS Glue (par exemple,arn:aws:glue:us-east-1:123456789:database/test_database
).PROJECT_ID
: ID de votre projet BigQuery.CONNECTION_LOCATION
: emplacement de votre connexion AWS, par exempleaws-us-east-1
CONNECTION_NAME
: nom de votre connexion AWS.DATASET_NAME
: nom de votre nouvel ensemble de données dans BigQuery. Pour créer un ensemble de données dans un projet autre que votre projet par défaut, ajoutez l'ID du projet au nom de l'ensemble de données de la manière suivante :PROJECT_ID
:DATASET_NAME
.
API
Appelez la méthode datasets.insert
avec une ressource d'ensemble de données et un champ externalDatasetReference
définis pour votre base de données AWS Glue.
Répertorier les tables dans un ensemble de données fédéré
Pour répertorier les tables disponibles pour les requêtes dans votre ensemble de données fédéré, consultez la section Répertorier les ensembles de données.
Obtenir des informations sur la table
Pour obtenir des informations sur les tables de votre ensemble de données fédéré, par exemple sur les détails du schéma, consultez la page Obtenir des informations sur la table.
Contrôler l'accès aux tables
Pour gérer l'accès aux tables de votre ensemble de données fédéré, consultez la page Contrôler l'accès aux ressources avec IAM.
Interroger les données AWS Glue
L'interrogation de tables dans des ensembles de données fédérés est la même que l'interrogation de tables dans n'importe quel autre ensemble de données BigQuery.
Vous pouvez interroger les tables AWS Glue aux formats suivants :
- CSV (compressé et non compressé)
- JSON (compressé et non compressé)
- Parquet
- ORC
- Avro
- Iceberg
Détails du mappage de table
Chaque table à laquelle vous accordez l'accès dans votre base de données AWS Glue apparaît sous la forme d'une table équivalente dans votre ensemble de données BigQuery.
Format
Le format de chaque table BigQuery est déterminé par les champs suivants de la table AWS Glue correspondante :
InputFormat
(Table.StorageDescriptor.InputFormat
)OutputFormat
(Table.StorageDescriptor.OutputFormat
)SerializationLib
(Table.StorageDescriptor.SerdeInfo.SerializationLibrary
)
Les seules exceptions sont les tables Iceberg, qui utilisent le champ TableType
(Table.Parameters["table_type"]
).
Par exemple, une table AWS Glue avec les champs suivants est mappée sur une table ORC dans BigQuery :
InputFormat
="org.apache.hadoop.hive.ql.io.orc.OrcInputFormat"
OutputFormat
="org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat"
SerializationLib
="org.apache.hadoop.hive.ql.io.orc.OrcSerde"
Emplacement
L'emplacement de chaque table BigQuery est déterminé comme suit :
- Tables Iceberg : le champ
Table.Parameters["metadata_location"]
de la table AWS Glue - Tables non partitionnées non-Iceberg : le champ
Table.StorageDescriptor.Location
dans la table AWS Glue - Tables non-Iceberg : API AWS Glue GetPartitions
Autres propriétés
De plus, certaines propriétés de la table AWS Glue sont automatiquement mappées avec des options spécifiques au format dans BigQuery :
Format | SerializationLib | Valeur de la table AWS Glue | Option BigQuery |
---|---|---|---|
CSV | LazySimpleSerDe | Table.StorageDescriptor.SerdeInfo.Parameters["field.delim"] | CsvOptions.fieldDelimiter |
CSV | LazySimpleSerDe | Table.StorageDescriptor.Parameters["serialization.encoding"] | CsvOptions.encoding |
CSV | LazySimpleSerDe | Table.StorageDescriptor.Parameters["skip.header.line.count"] | CsvOptions.skipLeadingRows |
CSV | OpenCsvSerDe | Table.StorageDescriptor.SerdeInfo.Parameters["separatorChar"] | CsvOptions.fieldDelimiter |
CSV | OpenCsvSerDe | Table.StorageDescriptor.SerdeInfo.Parameters["quoteChar"] | CsvOptions.quote |
CSV | OpenCsvSerDe | Table.StorageDescriptor.Parameters["serialization.encoding"] | CsvOptions.encoding |
CSV | OpenCsvSerDe | Table.StorageDescriptor.Parameters["skip.header.line.count"] | CsvOptions.skipLeadingRows |
JSON | Hive JsonSerDe | Table.StorageDescriptor.Parameters["serialization.encoding"] | JsonOptions.encoding |
Créer une vue dans un ensemble de données fédéré
Vous ne pouvez pas créer de vue dans un ensemble de données fédéré. Cependant, vous pouvez créer une vue dans un ensemble de données standard basé sur une table d'un ensemble de données fédéré. Pour en savoir plus, consultez la page Créer des vues.
Supprimer un ensemble de données fédéré
La suppression d'un ensemble de données fédéré est identique à la suppression de tout autre ensemble de données BigQuery. Pour en savoir plus, consultez la page Supprimer des ensembles de données.
Tarifs
Pour en savoir plus sur les tarifs, consultez la section Tarifs de BigQuery Omni.
Limites
- Toutes les limites de BigQuery Omni s’appliquent.
- Vous ne pouvez pas ajouter, supprimer ni mettre à jour de données ou de métadonnées dans les tables d'un ensemble de données fédéré AWS Glue.
- Vous ne pouvez pas créer de tables ou de vues matérialisées dans un ensemble de données fédéré AWS Glue.
- Vous ne pouvez créer un ensemble de données fédéré AWS Glue que via l'outil bq et l'API. La console Google Cloud n'est pas compatible.
- Les vues
INFORMATION_SCHEMA
ne sont pas compatibles. - La sécurité au niveau des lignes, la sécurité au niveau des colonnes, la mise en cache de métadonnées et le masquage des données ne sont pas acceptés.
- Le type de données Apache Hive
UNION
n'est pas compatible avec les tables Avro.