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 utilizzare 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 una query SQL di Google. Ti connetti BigQuery utilizzando le credenziali archiviate Gestione dei segreti AWS tramite una connessione AWS Glue.
Per ulteriori informazioni su Google BigQuery, consulta il BigQuery sito Web di Google Cloud
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 Gestione dei segreti AWS 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 delle tabelle
.
In Google Cloud Platform, crea ed esporta le credenziali dell'account del servizio:
Per creare un account di servizio in GCP, segui il tutorial disponibile in Creazione di account di servizio
. -
Quando selezionate il progetto, selezionate il progetto contenente la tabella. BigQuery
-
Quando selezioni i ruoli GCP IAM per il tuo account di servizio, aggiungi o crea 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 le fasi future.Nel Gestione dei segreti AWS, 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 Gestione dei segreti AWS segreto nella Gestione dei segreti AWS documentazione. Dopo aver creato il segreto, mantieni il nome del segreto
secretNameper il passaggio successivo.Quando create Key/value coppie, specificate chiavi e 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.keyfilechiave, specificare il.s3secretpath
-
Nel AWS Glue Data Catalog, crea una connessione seguendo i passaggi riportati di seguitoAggiunta di una connessione AWS Glue. Dopo aver creato la connessione, conservate il nome della connessione per il passaggio successivo.
connectionNameQuando 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 lavoro AWS Glue, fornisci
connectionNameuna connessione di rete aggiuntiva.
Leggere dalle BigQuery tabelle
Prerequisiti:
-
Una BigQuery tabella da cui vorresti leggere. Avrai bisogno dei nomi delle BigQuery tabelle e dei set di dati, nel modulo
[dataset].[table]. Chiamiamo questotableName. -
Il progetto di fatturazione per il BigQuery tavolo. 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 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, in cui BigQuery scrivere viste materializzate per le tue query.
Dovrai concedere le autorizzazioni GCP IAM appropriate al tuo account di servizio per 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 su tabelle BigQuery
Questo esempio scrive direttamente sul 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 desideri scrivere. Avrai bisogno dei nomi delle BigQuery tabelle e dei set di dati, nel modulo
[dataset].[table]. È possibile anche fornire un nuovo nome di tabella che verrà creato automaticamente. Chiamiamo questotableName. -
Il progetto di fatturazione per il BigQuery tavolo. 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 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. Utilizzato per la lettura/scrittura. Il nome di un progetto Google Cloud associato alla tua tabella. -
table: (obbligatorio) utilizzato per la lettura/scrittura. Il nome della BigQuery tabella nel formato[[project:]dataset.]. -
dataset: obbligatorio quando non è definito tramite l'opzionetable. Utilizzato per la lettura/scrittura. Il nome del set di dati contenente la BigQuery tabella. -
parentProject: Predefinita: impostazione predefinita dell'account del servizio Google Cloud. Utilizzato per la lettura/scrittura. Il nome di un progetto Google Cloud associato alprojectutilizzato per la fatturazione. -
sourceType: utilizzato per la lettura. Richiesto durante la lettura. Valori validi:table,queryIndica a 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 memorizzare le materializzazioni per le viste. -
viewsEnabled: utilizzato per la lettura. Valore predefinito: false. Valori validi: vero, falso. Configura se BigQuery utilizzerà le viste. -
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 di 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à su BigQuery Using a Load. 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 di 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.
secretNameIdentify, il Gestione dei segreti AWS 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 le fasi future. -
Modifica
secretName, aggiungendo laspark.hadoop.google.cloud.auth.service.account.json.keyfilechiave. Impostare il valore sus3secretpath. -
Concedi al tuo lavoro AWS Glue Job le autorizzazioni di accesso ad 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", } )