Crea set di dati federati AWS Glue
Questo documento descrive come creare un set di dati federato in BigQuery collegato a un database esistente in AWS Glue.
Un set di dati federato è una connessione tra BigQuery e un un'origine dati esterna a livello del set di dati. Le tabelle in un set di dati federato sono compilate automaticamente dalle tabelle nei dati esterni corrispondenti. sorgente. Puoi eseguire query su queste tabelle direttamente in BigQuery, non possono apportare modifiche, aggiunte o eliminazioni. Tuttavia, eventuali aggiornamenti che crei nell'origine dati esterna si riflettono automaticamente in BigQuery.
Prima di iniziare
Assicurati di avere una connessione per accedere ai dati di AWS Glue.
Per creare o modificare una connessione, segui le istruzioni in Connettiti ad Amazon S3. Quando crei la connessione, includi la seguente istruzione delle norme per AWS Glue Criterio di Identity and Access Management di AWS per BigQuery. Includi questa istruzione in aggiunta alle altre autorizzazioni nella Bucket Amazon S3 in cui si trovano i dati nelle tabelle AWS Glue archiviati.
{ "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/*" ] }
Sostituisci quanto segue:
REGION
: la regione AWS, ad esempious-east-1
ACCOUNT_ID:
: l'ID account AWS di 12 cifreDATABASE_NAME
: il database AWS Glue nome
Autorizzazioni obbligatorie
Per ottenere le autorizzazioni necessarie per creare un set di dati federato,
chiedi all'amministratore di concederti
Ruolo IAM Amministratore BigQuery (roles/bigquery.admin
).
Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso.
Questo ruolo predefinito contiene le autorizzazioni necessarie per creare un set di dati federato. Per vedere le autorizzazioni esatte obbligatorie, espandi la sezione Autorizzazioni obbligatorie:
Autorizzazioni obbligatorie
Per creare un set di dati federato sono necessarie le seguenti autorizzazioni:
-
bigquery.datasets.create
-
bigquery.connections.use
-
bigquery.connections.delegate
Potresti anche riuscire a ottenere queste autorizzazioni con ruoli personalizzati altri ruoli predefiniti.
Per ulteriori informazioni su ruoli e autorizzazioni IAM in per BigQuery, consulta Introduzione a IAM.
Crea un set di dati federato
Per creare un set di dati federato, segui questi passaggi:
Console
Apri la pagina BigQuery nella console Google Cloud.
Nel riquadro Explorer, seleziona il progetto in cui vuoi creare del set di dati.
Espandi
Azioni e fai clic su Crea set di dati.Nella pagina Crea set di dati, segui questi passaggi:
- In ID set di dati, inserisci un nome univoco per il set di dati.
- In Tipo di località, scegli una località AWS per il set di dati, ad esempio
aws-us-east-1
. Dopo aver creato un set di dati, la località non può essere è cambiato. Per Set di dati esterno:
- Seleziona la casella accanto a Collega a un set di dati esterno.
- In Tipo di set di dati esterno, seleziona
AWS Glue
. - In Fonte esterna, inserisci
aws-glue://
seguito dal Nome risorsa Amazon (ARN) del database AWS Glue, ad esempioaws-glue://arn:aws:glue:us-east-1:123456789:database/test_database
, - In ID connessione, seleziona la tua connessione AWS.
Lascia invariate le altre impostazioni predefinite.
Fai clic su Crea set di dati.
SQL
Utilizza la
Dichiarazione DDL (Data Definition Language) di CREATE EXTERNAL SCHEMA
.
Nella console Google Cloud, vai alla pagina BigQuery.
Nell'editor query, inserisci la seguente istruzione:
CREATE EXTERNAL SCHEMA DATASET_NAME WITH CONNECTION PROJECT_ID.CONNECTION_LOCATION.CONNECTION_NAME OPTIONS ( external_source = 'AWS_GLUE_SOURCE', location = 'LOCATION');
Sostituisci quanto segue:
DATASET_NAME
: il nome del nuovo set di dati in in BigQuery.PROJECT_ID
: il tuo ID progetto.CONNECTION_LOCATION
: la posizione del tuo AWS connessione attiva, ad esempioaws-us-east-1
.CONNECTION_NAME
: il nome del tuo AWS connessione.AWS_GLUE_SOURCE
: il Nome risorsa Amazon (ARN) del database AWS Glue con un prefisso che identifica sorgente, ad esempioaws-glue://arn:aws:glue:us-east-1:123456789:database/test_database
.LOCATION
: la posizione del nuovo set di dati in BigQuery, ad esempioaws-us-east-1
. Dopo aver creato non puoi modificarne la località.
Fai clic su
Esegui.
Per ulteriori informazioni su come eseguire le query, consulta Eseguire una query interattiva.
bq
In un ambiente a riga di comando, crea un set di dati utilizzando
Comando bq mk
:
bq --location=LOCATION mk --dataset \ --external_source aws-glue://AWS_GLUE_SOURCE \ --connection_id PROJECT_ID.CONNECTION_LOCATION.CONNECTION_NAME \ DATASET_NAME
Sostituisci quanto segue:
LOCATION
: la posizione del nuovo set di dati in BigQuery, ad esempioaws-us-east-1
. Dopo aver creato non puoi modificarne la località. Puoi impostare una località predefinita utilizzando il parametro File.bigqueryrc
.AWS_GLUE_SOURCE
: il Nome risorsa Amazon (ARN) del database AWS Glue, ad esempioarn:aws:glue:us-east-1:123456789:database/test_database
.PROJECT_ID
: il tuo progetto BigQuery ID.CONNECTION_LOCATION
: la posizione del tuo AWS connessione attiva, ad esempioaws-us-east-1
.CONNECTION_NAME
: il nome della tua connessione AWS.DATASET_NAME
: il nome del nuovo set di dati in in BigQuery. Per creare un set di dati in un progetto diverso da quello predefinito, aggiungi l'ID progetto al nome del set di dati nel seguente formato:PROJECT_ID
:DATASET_NAME
.
Terraform
Utilizza la
google_bigquery_dataset
risorsa.
Per eseguire l'autenticazione in BigQuery, configura il valore predefinito dell'applicazione Credenziali. Per ulteriori informazioni, vedi Configura l'autenticazione per le librerie client.
Nell'esempio seguente viene creato un set di dati federato AWS Glue:
resource "google_bigquery_dataset" "dataset" { provider = google-beta dataset_id = "example_dataset" friendly_name = "test" description = "This is a test description." location = "aws-us-east-1" external_dataset_reference { external_source = "aws-glue://arn:aws:glue:us-east-1:999999999999:database/database" connection = "projects/project/locations/aws-us-east-1/connections/connection" } }
Per applicare la configurazione Terraform a un progetto Google Cloud, completa i passaggi nella le sezioni seguenti.
Prepara Cloud Shell
- Avvia Cloud Shell.
-
Imposta il progetto Google Cloud predefinito dove vuoi applicare le configurazioni Terraform.
Devi eseguire questo comando una sola volta per progetto e puoi eseguirlo in qualsiasi directory.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Le variabili di ambiente vengono sostituite se imposti valori espliciti in Terraform di configurazione del deployment.
Prepara la directory
Ogni file di configurazione Terraform deve avere una directory dedicata (inoltre chiamato modulo principale).
-
In Cloud Shell, crea una directory e un nuovo
all'interno di quella directory. Il nome file deve contenere i caratteri
.tf
, ad esempiomain.tf
. In questo tutorial, il file è denominatomain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Se stai seguendo un tutorial, puoi copiare il codice campione in ogni sezione o passaggio.
Copia il codice campione nel nuovo oggetto
main.tf
.Facoltativamente, copia il codice da GitHub. Opzione consigliata quando lo snippet Terraform fa parte di una soluzione end-to-end.
- Esamina e modifica i parametri di esempio da applicare al tuo ambiente.
- Salva le modifiche.
-
Inizializza Terraform. Devi eseguire questa operazione una sola volta per directory.
terraform init
Facoltativamente, per utilizzare la versione più recente del provider Google, includi
-upgrade
:terraform init -upgrade
Applica le modifiche
-
Rivedi la configurazione e verifica che le risorse che Terraform creerà o
che l'aggiornamento soddisfi le tue aspettative:
terraform plan
Apporta le correzioni necessarie alla configurazione.
-
Applica la configurazione Terraform eseguendo questo comando e inserendo
yes
alla richiesta:terraform apply
Attendi finché Terraform non visualizzi il messaggio "Applicazione completata!". per creare un nuovo messaggio email.
- Apri il progetto Google Cloud per visualizzare i risultati. Nella console Google Cloud, vai alle risorse nella UI per assicurarti create o aggiornate da Terraform.
API
Chiama il
Metodo datasets.insert
con una risorsa set di dati definita
e externalDatasetReference
campo
per il database AWS Glue.
Elenca tabelle in un set di dati federato
Per elencare le tabelle disponibili per la query nel set di dati federato, vedi Elenco dei set di dati.
Recupera informazioni tabella
Per ottenere informazioni sulle tabelle del tuo set di dati federato, ad esempio lo schema. i dettagli, vedi Recuperare informazioni sulla tabella.
Controllare l'accesso alle tabelle
Per gestire l'accesso alle tabelle nel tuo set di dati federato, vedi Controlla l'accesso alle risorse con IAM.
Esegui query sui dati di AWS Glue
L'esecuzione di query sulle tabelle nei set di dati federati è la come eseguire query su tabelle in qualsiasi altro set di dati BigQuery.
Puoi eseguire query sulle tabelle AWS Glue nei seguenti formati:
- CSV (compresso e non compresso)
- JSON (compresso e non compresso)
- Parquet
- ORC
- Avro
- Iceberg
Dettagli mappatura tabella
Ogni tabella a cui concedi l'accesso al tuo database AWS Glue viene visualizzato come tabella equivalente nel set di dati BigQuery.
Formato
Il formato di ogni tabella BigQuery è determinato da quanto segue dei rispettivi campi Tabella AWS Glue:
InputFormat
(Table.StorageDescriptor.InputFormat
)OutputFormat
(Table.StorageDescriptor.OutputFormat
)SerializationLib
(Table.StorageDescriptor.SerdeInfo.SerializationLibrary
)
L'unica eccezione sono le tabelle Iceberg, che utilizzano l'elemento TableType
(Table.Parameters["table_type"]
).
Ad esempio, una tabella AWS Glue con i seguenti campi è mappata in una tabella ORC in 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"
Località
La posizione di ogni tabella BigQuery è determinata dal seguenti:
- Tabelle Iceberg: il campo
Table.Parameters["metadata_location"]
nella Tabella AWS Glue - Tabelle non partizionate non Iceberg:
Table.StorageDescriptor.Location
nella tabella AWS Glue - Tabelle partizionate non Iceberg: API GetPartitions di AWS Glue
Altre proprietà
Inoltre, alcune proprietà della tabella AWS Glue vengono mappate automaticamente alle opzioni specifiche per il formato in BigQuery:
Formato | SerializationLib | Valore della tabella di colla di AWS | Opzione 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 |
Crea una vista in un set di dati federato
Non puoi creare una vista in un set di dati federato. Tuttavia, puoi creare una vista in un set di dati standard basato su una tabella di un set di dati federato. Per maggiori informazioni informazioni, consulta Creare viste.
Elimina un set di dati federato
Eliminare un set di dati federato è come eliminare qualsiasi altro set di dati set di dati BigQuery. Per ulteriori informazioni, vedi Elimina i set di dati.
Prezzi
Per informazioni sui prezzi, vedi Prezzi di BigQuery Omni.
Limitazioni
- Tutte le limitazioni di BigQuery Omni .
- Non puoi aggiungere, eliminare o aggiornare dati o metadati nelle tabelle in un Set di dati federato AWS Glue.
- Non puoi creare nuove tabelle, viste o viste materializzate in una Set di dati federato AWS Glue.
INFORMATION_SCHEMA
visualizzazioni non sono supportati.- Sicurezza a livello di riga sicurezza a livello di colonna memorizzazione nella cache dei metadati, e il mascheramento dei dati non sono supportati.
- Le impostazioni a livello di set di dati relative ai valori predefiniti per la creazione delle tabelle influisce sui set di dati federati perché non puoi creare tabelle manualmente.
- Il tipo di dati Apache Hive
UNION
non è supportato per le tabelle Avro.
Passaggi successivi
- Scopri di più su BigQuery Omni
- Prova la Lab su BigQuery Omni con AWS.