Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
BigQuery connessioni
Puoi usare AWS Glue for Spark per leggere e scrivere su tabelle in Google BigQuery in AWS Glue 4.0 e versioni successive. Puoi leggere da BigQuery con una query SQL di Google. Ti connetti BigQuery utilizzando le credenziali memorizzate AWS Secrets Manager tramite una connessione AWS Glue.
Per ulteriori informazioni su Google BigQuery, consulta il BigQuery sito Web di
Configurazione delle connessioni BigQuery
Per connetterti a Google BigQuery da AWS Glue, dovrai creare e archiviare le tue credenziali di Google Cloud Platform in modo AWS Secrets Manager segreto, quindi associare quel segreto a una connessione Google BigQuery AWS Glue.
Per configurare una connessione a BigQuery:
In Google Cloud Platform, crea e identifica le risorse pertinenti:
Crea o identifica un progetto GCP contenente BigQuery le tabelle a cui desideri connetterti.
Abilita l' BigQuery API. Per ulteriori informazioni, consulta Utilizzare l'API BigQuery Storage Read per leggere i dati della tabella
.
In Google Cloud Platform, crea ed esporta le credenziali dell'account del servizio:
Puoi utilizzare la procedura guidata per le BigQuery credenziali per accelerare questo passaggio: creazione delle credenziali. https://console.cloud.google.com/apis/credentials/wizard?api=bigquery.googleapis.com
Per creare un account di servizio in GCP, segui il tutorial disponibile in Creazione di account di servizio
. -
Quando selezioni il progetto, seleziona il progetto contenente la tua tabella. BigQuery
-
Quando selezionate i ruoli GCP IAM per il vostro account di servizio, aggiungete o create un ruolo che conceda le autorizzazioni appropriate per eseguire BigQuery lavori di lettura, scrittura o creazione BigQuery di tabelle.
Per creare le credenziali per il tuo account di servizio, segui il tutorial disponibile in Creazione della chiave di un account di servizio
. -
Quando selezioni il tipo di chiave, seleziona JSON.
Ora dovresti avere scaricato un file JSON con le credenziali per il tuo account di servizio. La schermata visualizzata dovrebbe risultare simile a quella nell'immagine seguente:
{ "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" }-
Carica il file JSON delle credenziali in una posizione Amazon S3 adeguatamente sicura. Conserva il percorso del file,
s3secretpathper i passaggi futuri.In AWS Secrets Manager, crea un segreto utilizzando le tue credenziali di Google Cloud Platform. Per creare un segreto in Secrets Manager, segui il tutorial disponibile in Crea un AWS Secrets Manager segreto nella AWS Secrets Manager documentazione. Dopo aver creato il segreto, mantieni il nome del segreto,
secretNameper il passaggio successivo.Quando crei Key/value coppie, specifica le chiavi e i valori come segue:
-
Per le
client_idchiavitoken_uriclient_x509_cert_urlprivate_key_id,project_id,universe_domain,,auth_provider_x509_cert_url,auth_uri,client_email,private_key,type,, specificate i valori corrispondenti nel file JSON scaricato. -
Per
spark.hadoop.google.cloud.auth.service.account.json.keyfilela chiave, specificare.s3secretpath
-
Nel AWS Glue Data Catalog, create una connessione seguendo i passaggi indicati inAggiungere una AWS Glue connessione. Dopo aver creato la connessione, mantieni il nome della connessione
connectionName, per il passaggio successivo.Quando selezioni un tipo di connessione, seleziona Google BigQuery.
Quando selezioni un AWS segreto, fornisci
secretName.
Concedi al ruolo IAM associato al tuo lavoro AWS Glue il permesso di lettura
secretName.Nella configurazione del job AWS Glue,
connectionNameforniscilo come connessione di rete aggiuntiva.
Lettura dalle BigQuery tabelle
Prerequisiti:
-
Una BigQuery tabella da cui vorresti leggere. Avrai bisogno dei nomi della BigQuery tabella e del set di dati, nel modulo
[dataset].[table]. Chiamiamolo.tableName -
Il progetto di fatturazione per la BigQuery tabella. Avrai bisogno del nome del progetto,
parentProject. Se non esiste un progetto padre di fatturazione, utilizza il progetto contenente la tabella. -
BigQuery informazioni di autenticazione. Completa i passaggi per gestire le credenziali di connessione con AWS Glue per configurare le tue informazioni di autenticazione. Avrai bisogno del nome della connessione AWS Glue,.
connectionName
Ad esempio:
bigquery_read = glueContext.create_dynamic_frame.from_options( connection_type="bigquery", connection_options={ "connectionName": "connectionName", "parentProject": "parentProject", "sourceType": "table", "table": "tableName", }
Puoi anche fornire una query, per filtrare i risultati restituiti al tuo DynamicFrame. Sarà necessario configurare query, sourceType, viewsEnabled e materializationDataset.
Ad esempio:
Prerequisiti aggiuntivi:
Dovrai creare o identificare un BigQuery set di datimaterializationDataset, BigQuery dove scrivere viste materializzate per le tue query.
Dovrai concedere le autorizzazioni GCP IAM appropriate al tuo account di servizio in cui creare tabelle. 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" } )
Scrittura sulle tabelle BigQuery
Questo esempio scrive direttamente nel BigQuery servizio. BigQuery supporta anche il metodo di scrittura «indiretto». Per ulteriori informazioni sulla configurazione di scritture indirette, consulta la pagina Utilizzo della scrittura indiretta con Google BigQuery.
Prerequisiti:
-
Una BigQuery tabella su cui vorresti scrivere. Avrai bisogno dei nomi della BigQuery tabella e del set di dati, nel modulo
[dataset].[table]. È possibile anche fornire un nuovo nome di tabella che verrà creato automaticamente. Chiamiamolo.tableName -
Il progetto di fatturazione per la BigQuery tabella. Avrai bisogno del nome del progetto,
parentProject. Se non esiste un progetto padre di fatturazione, utilizza il progetto contenente la tabella. -
BigQuery informazioni di autenticazione. Completa i passaggi per gestire le credenziali di connessione con AWS Glue per configurare le tue informazioni di autenticazione. Avrai bisogno del nome della connessione AWS Glue,.
connectionName
Ad esempio:
bigquery_write = glueContext.write_dynamic_frame.from_options( frame=frameToWrite, connection_type="bigquery", connection_options={ "connectionName": "connectionName", "parentProject": "parentProject", "writeMethod": "direct", "table": "tableName", } )
BigQuery riferimento all'opzione di connessione
-
project: Predefinita: impostazione predefinita dell'account del servizio Google Cloud. Usato per Read/Write. Il nome di un progetto Google Cloud associato alla tua tabella. -
table— (Obbligatorio) Usato per Read/Write. Il nome della BigQuery tabella nel formato[[project:]dataset.]. -
dataset: obbligatorio quando non è definito tramite l'opzionetable. Usato per Read/Write. Il nome del set di dati contenente la BigQuery tabella. -
parentProject: Predefinita: impostazione predefinita dell'account del servizio Google Cloud. Usato per Read/Write. Il nome di un progetto Google Cloud associato alprojectutilizzato per la fatturazione. -
sourceType: utilizzato per la lettura. Richiesto durante la lettura. Valori validi:table,queryInforma AWS Glue se leggerai per tabella o per query. -
materializationDataset: utilizzato per la lettura. Valori validi: stringhe. Il nome di un BigQuery set di dati utilizzato per archiviare le materializzazioni per le viste. -
viewsEnabled: utilizzato per la lettura. Valore predefinito: false. Valori validi: vero, falso. Configura se utilizzerà le viste BigQuery . -
query: utilizzato per la lettura. Usato quandoviewsEnabledè vero. Una query DQL di GoogleSQL. -
temporaryGcsBucket: utilizzato per la scrittura. Obbligatorio quandowriteMethodè impostato sull'impostazione predefinita (indirect). Nome di un bucket Google Cloud Storage utilizzato per archiviare una forma intermedia dei dati durante la scrittura su. BigQuery -
writeMethod: valore predefinito:indirect. Valori validi:direct,indirect. Utilizzato per la scrittura. Specifica il metodo utilizzato per scrivere i dati.Se impostato su
direct, il connettore scriverà utilizzando l'API BigQuery Storage Write.Se impostato su
indirect, il connettore scriverà su Google Cloud Storage, quindi lo trasferirà BigQuery utilizzando un'operazione di caricamento. L'account del servizio Google Cloud avrà bisogno delle autorizzazioni GCS appropriate.
Utilizzo della scrittura indiretta con Google BigQuery
Questo esempio utilizza la scrittura indiretta, che scrive i dati su Google Cloud Storage e li copia su Google BigQuery.
Prerequisiti:
Avrai bisogno di un bucket temporaneo di Google Cloud Storage,temporaryBucket.
Il ruolo GCP IAM per l'account del servizio GCP di AWS Glue richiederà le autorizzazioni GCS appropriate per l'accesso. temporaryBucket
Configurazione aggiuntiva:
Per configurare la scrittura indiretta con: BigQuery
Valuta Configurazione delle connessioni BigQuery e individua o scarica nuovamente il file JSON delle credenziali GCP. Identifica
secretNameil AWS Secrets Manager segreto della connessione Google BigQuery AWS Glue utilizzata nel tuo lavoro.-
Carica il file JSON delle credenziali in una posizione Amazon S3 adeguatamente sicura. Conserva il percorso del file,
s3secretpathper i passaggi futuri. -
Modifica
secretName, aggiungendo laspark.hadoop.google.cloud.auth.service.account.json.keyfilechiave. Impostare il valore sus3secretpath. -
Concedi al tuo AWS Glue Job le autorizzazioni di accesso Amazon S3 IAM.
s3secretpath
Ora puoi fornire la posizione temporanea del bucket GCS al tuo metodo di scrittura. Non è necessario fornire il writeMethod, poiché indirect in passato è stata l'impostazione predefinita.
bigquery_write = glueContext.write_dynamic_frame.from_options( frame=frameToWrite, connection_type="bigquery", connection_options={ "connectionName": "connectionName", "parentProject": "parentProject", "temporaryGcsBucket": "temporaryBucket", "table": "tableName", } )