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.
BigQuery connexions
Vous pouvez utiliser AWS Glue for Spark pour lire et écrire dans des tableaux de Google BigQuery dans AWS Glue 4.0 et versions ultérieures. Vous pouvez lire à partir BigQuery d'une requête Google SQL. Vous vous connectez à BigQuery l'aide des informations d'identification stockées AWS Secrets Manager via une connexion AWS Glue.
Pour plus d'informations sur Google BigQuery, consultez le BigQuery site Web de Google Cloud
Configuration des BigQuery connexions
Pour vous connecter à Google BigQuery depuis AWS Glue, vous devez créer et stocker vos informations d'identification Google Cloud Platform dans un AWS Secrets Manager secret, puis associer ce secret à une connexion Google BigQuery AWS Glue.
Pour configurer une connexion pour BigQuery :
Dans Google Cloud Platform, créez et identifiez les ressources pertinentes :
Créez ou identifiez un projet GCP contenant des BigQuery tables auxquelles vous souhaitez vous connecter.
Activez l' BigQuery API. Pour plus d'informations, voir Utiliser l'API BigQuery Storage Read pour lire les données des tables
.
Dans Google Cloud Platform, créez et exportez les informations d’identification du compte de service :
Vous pouvez utiliser l'assistant BigQuery d'identification pour accélérer cette étape : Créer des informations d'identification
. Pour créer un compte de service dans GCP, suivez le didacticiel disponible dans la section Créer des comptes de service
. -
Lorsque vous sélectionnez un projet, sélectionnez le projet contenant votre BigQuery tableau.
-
Lorsque vous sélectionnez des rôles GCP IAM pour votre compte de service, ajoutez ou créez un rôle qui accorderait les autorisations appropriées pour exécuter des BigQuery tâches de lecture, d'écriture ou de création BigQuery de tableaux.
Pour créer des informations d’identification pour votre compte de service, suivez le didacticiel disponible dans la section Créer une clé de compte de service
. -
Lorsque vous sélectionnez le type de clé, sélectionnez JSON.
Vous devriez maintenant avoir téléchargé un fichier JSON contenant les informations d’identification de votre compte de service. Il doit ressembler à l’exemple ci-dessous.
{ "type": "service_account", "project_id": "*****", "private_key_id": "*****", "private_key": "*****", "client_email": "*****", "client_id": "*****", "auth_uri": "https://accounts.google.com/o/oauth2/auth", "token_uri": "https://oauth2.googleapis.com/token", "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", "client_x509_cert_url": "*****", "universe_domain": "googleapis.com" }-
Téléchargez le fichier JSON de vos informations d'identification sur un emplacement Amazon S3 correctement sécurisé. Conservez le chemin d'accès au fichier
s3secretpathpour les étapes suivantes.Dans AWS Secrets Manager, créez un secret à l'aide de vos informations d'identification Google Cloud Platform. Pour créer un secret dans Secrets Manager, suivez le didacticiel disponible dans la section Créer un AWS Secrets Manager secret de la AWS Secrets Manager documentation. Après avoir créé le secret, conservez le nom du secret
secretNamepour l'étape suivante.Lorsque vous créez des Key/value paires, spécifiez les clés et les valeurs comme suit :
-
Pour les
client_idcléstoken_uriclient_x509_cert_url,private_key_id,project_id,,universe_domain,auth_provider_x509_cert_url,auth_uri,,client_email,private_key,type,,,,, spécifiez les valeurs correspondantes dans le fichier JSON téléchargé. -
Pour la
spark.hadoop.google.cloud.auth.service.account.json.keyfileclé, spécifiez les3secretpath.
-
Dans le catalogue de données AWS Glue, créez une connexion en suivant les étapes décrites dansAjouter une AWS Glue connexion. Après avoir créé la connexion, conservez le nom de la connexion
connectionName, pour l'étape suivante.Lorsque vous sélectionnez un type de connexion, sélectionnez Google BigQuery.
Lorsque vous sélectionnez un AWS secret, indiquez
secretName.
Autorisez le rôle IAM associé à votre job AWS Glue à lire
secretName.Dans la configuration de votre tâche AWS Glue, indiquez
connectionNamecomme connexion réseau supplémentaire.
Lecture à partir de BigQuery tableaux
Prérequis :
-
Un BigQuery tableau que vous aimeriez lire. Vous aurez besoin des noms de la BigQuery table et du jeu de données, dans le formulaire
[dataset].[table]. Appelons çatableName. -
Le projet de facturation pour la BigQuery table. Vous aurez besoin du nom du projet,
parentProject. S'il n'existe aucun projet parent de facturation, utilisez le projet contenant la table. -
BigQuery informations d'authentification. Suivez les étapes Pour gérer vos informations de connexion avec AWS Glue pour configurer vos informations d'authentification. Vous aurez besoin du nom de la connexion AWS Glue,
connectionName.
Par exemple :
bigquery_read = glueContext.create_dynamic_frame.from_options( connection_type="bigquery", connection_options={ "connectionName": "connectionName", "parentProject": "parentProject", "sourceType": "table", "table": "tableName", }
Vous pouvez également fournir une requête pour filtrer les résultats renvoyés à votre DynamicFrame. Vous devrez configurer query, sourceType, viewsEnabled et materializationDataset.
Par exemple :
Prérequis supplémentaires :
Vous devrez créer ou identifier un BigQuery ensemble de donnéesmaterializationDataset, où vous BigQuery pourrez écrire des vues matérialisées pour vos requêtes.
Vous devez accorder les autorisations GCP IAM appropriées à votre compte de service pour créer des tables dans. materializationDataset
glueContext.create_dynamic_frame.from_options( connection_type="bigquery", connection_options={ "connectionName": "connectionName", "materializationDataset":materializationDataset, "parentProject": "parentProject", "viewsEnabled": "true", "sourceType": "query", "query": "select * from bqtest.test" } )
Écrire dans des BigQuery tableaux
Cet exemple écrit directement dans le BigQuery service. BigQuery prend également en charge la méthode d'écriture « indirecte ». Pour plus d'informations sur les écritures indirectes, consultez Utiliser l'écriture indirecte avec Google BigQuery.
Prérequis :
-
BigQuery Tableau dans lequel vous aimeriez écrire. Vous aurez besoin des noms de BigQuery table et de jeu de données, dans le formulaire
[dataset].[table]. Vous pouvez également fournir un nouveau nom de table qui sera automatiquement créé. Appelons çatableName. -
Le projet de facturation pour la BigQuery table. Vous aurez besoin du nom du projet,
parentProject. S'il n'existe aucun projet parent de facturation, utilisez le projet contenant la table. -
BigQuery informations d'authentification. Suivez les étapes Pour gérer vos informations de connexion avec AWS Glue pour configurer vos informations d'authentification. Vous aurez besoin du nom de la connexion AWS Glue,
connectionName.
Par exemple :
bigquery_write = glueContext.write_dynamic_frame.from_options( frame=frameToWrite, connection_type="bigquery", connection_options={ "connectionName": "connectionName", "parentProject": "parentProject", "writeMethod": "direct", "table": "tableName", } )
BigQuery référence des options de connexion
-
project: par défaut, le compte de service Google Cloud par défaut. Utilisé pour Read/Write. Le nom d'un projet Google Cloud associé à votre table. -
table— (Obligatoire) Utilisé pour Read/Write. Le nom de votre BigQuery tableau dans le format[[project:]dataset.]. -
dataset: obligatoire lorsqu'il n'est pas défini par l'optiontable. Utilisé pour Read/Write. Le nom du jeu de données contenant votre BigQuery table. -
parentProject: par défaut, le compte de service Google Cloud par défaut. Utilisé pour Read/Write. Nom d'un projet Google Cloud associé àprojectutilisé pour la facturation. -
sourceType: utilisé pour la lecture. Obligatoire lors de la lecture. Valeurs valides :table,queryindique à AWS Glue si vous allez lire par table ou par requête. -
materializationDataset: utilisé pour la lecture. Valeurs valides : chaînes. Nom d'un BigQuery ensemble de données utilisé pour stocker les matérialisations des vues. -
viewsEnabled: utilisé pour la lecture. Par défaut : false. Valeurs valides : true, false. Détermine si les vues BigQuery seront utilisées. -
query: utilisé pour la lecture. Utilisé quandviewsEnabledest true. Une requête GoogleSQL DQL. -
temporaryGcsBucket: utilisé pour écrire. Obligatoire lorsquewriteMethodest défini sur la valeur par défaut (indirect). Nom d'un bucket Google Cloud Storage utilisé pour stocker un formulaire intermédiaire de vos données lorsque vous écrivez dans BigQuery. -
writeMethod:indirectpar défaut. Valeurs valides :direct,indirect. Utilisé pour écrire. Spécifie la méthode utilisée pour écrire les données.Si ce paramètre est défini sur
direct, votre connecteur écrira à l'aide de l'API BigQuery Storage Write.Si ce paramètre est défini sur
indirect, votre connecteur écrira dans Google Cloud Storage, puis y sera transféré à l' BigQuery aide d'une opération de chargement. Votre compte de service Google Cloud aura besoin des autorisations GCS appropriées.
Utiliser l'écriture indirecte avec Google BigQuery
Cet exemple utilise l'écriture indirecte, qui écrit les données dans Google Cloud Storage et les copie dans Google BigQuery.
Prérequis :
Vous aurez besoin d'un bucket Google Cloud Storage temporairetemporaryBucket.
Le rôle GCP IAM pour le compte de service GCP de AWS Glue nécessitera les autorisations GCS appropriées pour y accéder. temporaryBucket
Configuration supplémentaire :
Pour configurer l'écriture indirecte avec BigQuery :
Évaluez Configuration des BigQuery connexions et localisez ou retéléchargez le fichier JSON de vos informations d'identification GCP. Identifiez
secretNamele AWS Secrets Manager secret de la connexion Google BigQuery AWS Glue utilisée dans votre travail.-
Téléchargez le fichier JSON de vos informations d'identification sur un emplacement Amazon S3 correctement sécurisé. Conservez le chemin d'accès au fichier
s3secretpathpour les étapes suivantes. -
Modifiez
secretNameen ajoutant laspark.hadoop.google.cloud.auth.service.account.json.keyfileclé. Définissez la valeur surs3secretpath. -
Accordez à votre tâche AWS Glue des autorisations d'accès
s3secretpathà Amazon S3 IAM.
Vous pouvez désormais fournir l'emplacement temporaire de votre compartiment GCS à votre méthode d'écriture. Vous n'avez pas besoin de fournir writeMethod, car indirect est historiquement la valeur par défaut.
bigquery_write = glueContext.write_dynamic_frame.from_options( frame=frameToWrite, connection_type="bigquery", connection_options={ "connectionName": "connectionName", "parentProject": "parentProject", "temporaryGcsBucket": "temporaryBucket", "table": "tableName", } )