Creare e gestire set di dati federati di AWS Glue
Un set di dati federato rispecchia lo schema e le tabelle di un'origine dati esterna, facendoli apparire come tabelle di sola lettura in un set di dati BigQuery. Puoi utilizzare un set di dati federato come un modo efficiente per accedere ai dati di AWS Glue 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 riportate in Connessione ad Amazon S3. Quando crei la connessione, includi la seguente istruzione di policy per AWS Glue nella policy AWS Identity and Access Management per BigQuery. Includi questa istruzione in aggiunta alle altre autorizzazioni per il bucket Amazon S3 in cui sono archiviati i dati nelle tabelle AWS Glue.
{ "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-1ACCOUNT_ID:: l'ID account AWS di 12 cifreDATABASE_NAME: il nome del database AWS Glue
Autorizzazioni obbligatorie
Per ottenere le autorizzazioni necessarie per creare un set di dati federato, chiedi all'amministratore di concederti il ruolo IAM di amministratore BigQuery (roles/bigquery.admin).
Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.
Questo ruolo predefinito contiene le autorizzazioni necessarie per creare un set di dati federato. Per vedere quali sono esattamente le autorizzazioni richieste, 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 ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.
Per saperne di più sui ruoli e sulle autorizzazioni IAM in BigQuery, consulta Introduzione a IAM.
Creare un set di dati federato
Per creare un set di dati federato:
Console
Apri la pagina BigQuery nella Google Cloud console.
Nel riquadro a sinistra, fai clic su Spazio di esplorazione:

Se non vedi il riquadro a sinistra, fai clic su Espandi riquadro a sinistra per aprirlo.
Nel riquadro Spazio di esplorazione, seleziona il progetto in cui vuoi creare il set di dati.
Fai clic su Visualizza azioni, quindi 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 modificata. Per Set di dati esterno:
- Seleziona la casella accanto a Link a un set di dati esterno.
- In Tipo di set di dati esterno, seleziona
AWS Glue. - In Origine esterna, inserisci
aws-glue://seguito dall' Amazon Resource Name (ARN) del database AWS Glue, ad esempioaws-glue://arn:aws:glue:us-east-1:123456789:database/test_database. - In ID connessione, seleziona la connessione AWS.
Lascia invariate le altre impostazioni predefinite.
Fai clic su Crea set di dati.
SQL
Utilizza l'istruzione DDL (Data Definition Language)
CREATE EXTERNAL SCHEMA.
Nella Google Cloud console, vai alla pagina BigQuery.
Nell'editor di 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 BigQuery.PROJECT_ID: il tuo ID progetto.CONNECTION_LOCATION: la località della connessione AWS, ad esempioaws-us-east-1.CONNECTION_NAME: il nome della connessione AWS.AWS_GLUE_SOURCE: l' Amazon Resource Name (ARN) del database AWS Glue con un prefisso che identifica l' origine, ad esempioaws-glue://arn:aws:glue:us-east-1:123456789:database/test_database.LOCATION: la località del nuovo set di dati in BigQuery, ad esempioaws-us-east-1. Dopo aver creato un set di dati, non puoi modificarne la località.
Fai clic su Esegui.
Per saperne di più su come eseguire le query, consulta Eseguire una query interattiva.
bq
In un ambiente della riga di comando, crea un set di dati utilizzando il
bq mk comando:
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 località del nuovo set di dati in BigQuery, ad esempioaws-us-east-1. Dopo aver creato un set di dati, non puoi modificarne la località. Puoi impostare un valore di località predefinito utilizzando il.bigqueryrcfile.AWS_GLUE_SOURCE: l' Amazon Resource Name (ARN) del database AWS Glue, ad esempioarn:aws:glue:us-east-1:123456789:database/test_database.PROJECT_ID: il tuo ID progetto BigQuery.CONNECTION_LOCATION: la località della connessione AWS, ad esempioaws-us-east-1.CONNECTION_NAME: il nome della connessione AWS.DATASET_NAME: il nome del nuovo set di dati 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 le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configura l'autenticazione per le librerie client.
L'esempio seguente crea un set di dati federato di 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 in un Google Cloud progetto, completa i passaggi nelle sezioni seguenti.
Preparare Cloud Shell
- Avvia Cloud Shell.
-
Imposta il Google Cloud progetto predefinito in cui 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 nel file di configurazione Terraform
Preparare la directory
Ogni file di configurazione Terraform deve avere la propria directory (chiamata anche modulo radice).
-
In Cloud Shell, crea una directory e un nuovo
file al suo interno. Il nome del file deve avere l'
.tfestensione, ad esempiomain.tf. In questo tutorial, il file viene chiamatomain.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 file
main.tfappena creato.Facoltativamente, copia il codice da GitHub. Questa operazione è 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 l'opzione
-upgrade:terraform init -upgrade
Applicare le modifiche
-
Esamina la configurazione e verifica che le risorse che Terraform creerà o
aggiornerà corrispondano alle tue aspettative:
terraform plan
Apporta le correzioni necessarie alla configurazione.
-
Applica la configurazione Terraform eseguendo il seguente comando e inserendo
yesal prompt:terraform apply
Attendi finché Terraform non visualizza il messaggio "Apply complete!".
- Apri il Google Cloud progetto per visualizzare i risultati. Nella Google Cloud console, vai alle risorse nell'interfaccia utente per assicurarti che Terraform le abbia create o aggiornate.
API
Chiama il
datasets.insert metodo
con una risorsa del set di dati
definita e il campo externalDatasetReference
per il database AWS Glue.
Elencare le tabelle in un set di dati federato
Per elencare le tabelle disponibili per le query nel set di dati federato, consulta Elencare i set di dati.
Ottenere informazioni sulla tabella
Per ottenere informazioni sulle tabelle nel set di dati federato, ad esempio i dettagli dello schema, consulta Ottenere informazioni sulla tabella.
Controllare l'accesso alle tabelle
Per gestire l'accesso alle tabelle nel set di dati federato, consulta Controllare l'accesso alle risorse con IAM.
La sicurezza a livello di riga, la sicurezza a livello di colonna e il mascheramento dei dati sono supportati anche per le tabelle nei set di dati federati.
Le operazioni sullo schema che potrebbero invalidare le policy di sicurezza, ad esempio l'eliminazione di una colonna in AWS Glue, possono causare l'errore dei job fino a quando le policy non vengono aggiornate. Inoltre, se elimini una tabella in AWS Glue e la ricrei, le policy di sicurezza non si applicano più alla tabella ricreata.
Eseguire query sui dati di AWS Glue
L'esecuzione di query sulle tabelle nei set di dati federati è la stessa dell'esecuzione di query sulle 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
- Delta Lake
Dettagli sul mapping delle tabelle
Ogni tabella a cui concedi l'accesso nel database AWS Glue viene visualizzata come una tabella equivalente nel set di dati BigQuery.
Formato
Il formato di ogni tabella BigQuery è determinato dai seguenti campi della rispettiva 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 il TableType
(Table.Parameters["table_type"]) field.
Ad esempio, una tabella AWS Glue con i seguenti campi viene mappata a 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 località di ogni tabella BigQuery è determinata da:
- Tabelle Iceberg: il campo
Table.Parameters["metadata_location"]nella tabella AWS Glue - Tabelle non Iceberg non partizionate: il campo
Table.StorageDescriptor.Locationnella tabella AWS Glue - Tabelle non Iceberg partizionate: l'API GetPartitions di AWS Glue
Altre proprietà
Inoltre, alcune proprietà delle tabelle AWS Glue vengono mappate automaticamente alle opzioni specifiche del formato in BigQuery:
| Formato | SerializationLib | Valore della tabella AWS Glue | 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 |
Creare 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 basata su una tabella in un set di dati federato. Per saperne di più, consulta Creare viste.
Eliminare un set di dati federato
L'eliminazione di un set di dati federato è la stessa dell'eliminazione di qualsiasi altro set di dati BigQuery. Per saperne di più, consulta Eliminare i set di dati.
Prezzi
Per informazioni sui prezzi, consulta la pagina relativa ai prezzi di BigQuery Omni.
Limitazioni
- Si applicano tutte le limitazioni di BigQuery Omni.
- Non puoi aggiungere, eliminare o aggiornare dati o metadati nelle tabelle in un set di dati federato di AWS Glue.
- Non puoi creare nuove tabelle, viste o viste materializzate in un set di dati federato di AWS Glue.
INFORMATION_SCHEMAviste non sono supportate.- La memorizzazione nella cache dei metadati non è supportata.
- Le impostazioni a livello di set di dati correlate alle impostazioni predefinite per la creazione di tabelle non influiscono sui set di dati federati perché non puoi creare tabelle manualmente.
- Il tipo di dati
UNIONdi Apache Hive non è supportato per le tabelle Avro. - Si applicano le limitazioni delle tabelle esterne.
Passaggi successivi
- Scopri di più su BigQuery Omni.
- Prova il lab BigQuery Omni con AWS.