Introduzione ai trasferimenti da Amazon S3
Il BigQuery Data Transfer Service per Amazon S3 consente di pianificare e gestire automaticamente i job di caricamento ricorrenti da Amazon S3 in BigQuery.
Formati di file supportati
BigQuery Data Transfer Service supporta il caricamento di dati da Amazon S3 in uno dei seguenti formati:
- Valori separati da virgola (CSV)
- JSON (delimitato da nuova riga)
- Avro
- Parquet
- ORC
Tipi di compressione supportati
BigQuery Data Transfer Service per Amazon S3 supporta il caricamento di dati compressi. I tipi di compressione supportati da BigQuery Data Transfer Service sono gli stessi dei tipi di compressione supportati dai job di caricamento di BigQuery. Per saperne di più, vedi Caricare dati compressi e non compressi.
Prerequisiti di Amazon S3
Per caricare i dati da un'origine dati Amazon S3, devi:
- Fornire l'URI Amazon S3 per i dati di origine
- Avere l'ID della chiave di accesso
- Avere la chiave di accesso segreta
- Impostare, come minimo, la policy gestita da AWS
AmazonS3ReadOnlyAccesssui dati di origine Amazon S3
URI Amazon S3
Quando fornisci l'URI Amazon S3, il percorso deve essere nel formato s3://bucket/folder1/folder2/.... È obbligatorio solo il nome del bucket di primo livello.
I nomi delle cartelle sono facoltativi. Se specifichi un URI che include solo il nome del bucket, tutti i file nel bucket vengono trasferiti e caricati in BigQuery.
Parametrizzazione del runtime di trasferimento Amazon S3
Sia l'URI Amazon S3 sia la tabella di destinazione possono essere parametrizzati, consentendo di caricare i dati da bucket Amazon S3 organizzati per data. Tieni presente che la parte del bucket dell'URI non può essere parametrizzata. I parametri utilizzati dai trasferimenti Amazon S3 sono gli stessi utilizzati dai trasferimenti Cloud Storage.
Per maggiori dettagli, vedi Parametri di runtime nei trasferimenti.
Importazione dati per i trasferimenti da Amazon S3
Puoi specificare come caricare i dati in BigQuery selezionando una preferenza di scrittura nella configurazione del trasferimento quando configuri un trasferimento da Amazon S3.
Sono disponibili due tipi di preferenze di scrittura: trasferimenti incrementali e trasferimenti troncati.Trasferimenti incrementali
Una configurazione di trasferimento con una preferenza di scrittura APPEND o WRITE_APPEND, chiamata anche trasferimento incrementale, aggiunge in modo incrementale i nuovi dati a una tabella di destinazione BigQuery dall'ultimo trasferimento riuscito. Quando viene eseguita una configurazione di trasferimento con una preferenza di scrittura APPEND , BigQuery Data Transfer Service filtra i file modificati dall'ultima esecuzione del trasferimento riuscita. Per determinare quando un file viene modificato, BigQuery Data Transfer Service esamina i metadati del file per una proprietà "Ora ultima modifica". Ad esempio, BigQuery Data Transfer Service esamina la proprietà del timestamp updated
in un file Cloud Storage. Se BigQuery Data Transfer Service trova file con un'ora di ultima modifica successiva al timestamp dell'ultimo trasferimento riuscito, li trasferisce in un trasferimento incrementale.
Per mostrare come funzionano i trasferimenti incrementali, considera il seguente esempio di trasferimento da Cloud Storage. Un utente crea un file in un bucket Cloud Storage all'ora 2023-07-01T00:00Z denominato file_1. Il
updated timestamp per file_1 è
l'ora in cui è stato creato il file. L'utente crea quindi un trasferimento incrementale dal bucket Cloud Storage, pianificato per essere eseguito una volta al giorno alle 03:00Z, a partire dal 2023-07-01T03:00Z.
- Alle 03:00Z del 1° luglio 2023 inizia la prima esecuzione del trasferimento. Poiché si tratta della prima esecuzione del trasferimento per questa configurazione, BigQuery Data Transfer Service tenta di caricare tutti i file corrispondenti all'URI di origine nella tabella BigQuery di destinazione. L'esecuzione del trasferimento ha esito positivo e BigQuery Data Transfer Service carica correttamente
file_1nella tabella BigQuery di destinazione. - La successiva esecuzione del trasferimento, alle 03:00Z del 2 luglio 2023, non rileva file in cui la proprietà del timestamp
updatedè maggiore dell'ultima esecuzione del trasferimento riuscita (03:00Z del 1° luglio 2023). L'esecuzione del trasferimento ha esito positivo senza caricare dati aggiuntivi nella tabella BigQuery di destinazione.
L'esempio precedente mostra come BigQuery Data Transfer Service esamina la proprietà del timestamp updated del file di origine per determinare se sono state apportate modifiche ai file di origine e per trasferirle, se ne sono state rilevate.
Seguendo lo stesso esempio, supponiamo che l'utente crei un altro file nel bucket Cloud Storage alle 00:00Z del 3 luglio 2023, denominato file_2. Il
updated timestamp per file_2 è
l'ora in cui è stato creato il file.
- La successiva esecuzione del trasferimento, alle 03:00Z del 3 luglio 2023, rileva che
file_2ha un timestampupdatedmaggiore dell'ultima esecuzione del trasferimento riuscita (03:00Z del 1° luglio 2023). Supponiamo che all'avvio dell'esecuzione del trasferimento si verifichi un errore temporaneo. In questo scenario,file_2non viene caricato nella tabella BigQuery di destinazione. Il timestamp dell'ultima esecuzione del trasferimento riuscita rimane alle 03:00Z del 1° luglio 2023. - La successiva esecuzione del trasferimento, alle 03:00Z del 4 luglio 2023, rileva che
file_2ha un timestampupdatedmaggiore dell'ultima esecuzione del trasferimento riuscita (03:00Z del 1° luglio 2023). Questa volta, l'esecuzione del trasferimento viene completata senza problemi, quindi carica correttamentefile_2nella tabella BigQuery di destinazione. - La successiva esecuzione del trasferimento, alle 03:00Z del 5 luglio 2023, non rileva file in cui il timestamp
updatedè maggiore dell'ultima esecuzione del trasferimento riuscita (03:00Z del 4 luglio 2023). L'esecuzione del trasferimento ha esito positivo senza caricare dati aggiuntivi nella tabella BigQuery di destinazione.
L'esempio precedente mostra che, quando un trasferimento non riesce, nessun file viene trasferito alla tabella di destinazione BigQuery. Le modifiche ai file vengono trasferite alla successiva esecuzione del trasferimento riuscita. I trasferimenti riusciti successivi a un trasferimento non riuscito non causano la duplicazione dei dati. In caso di trasferimento non riuscito, puoi anche scegliere di attivare manualmente un trasferimento al di fuori dell'orario di esecuzione pianificato.
Trasferimenti troncati
Una configurazione di trasferimento con una preferenza di scrittura MIRROR o WRITE_TRUNCATE, chiamata anche trasferimento troncato, sovrascrive i dati nella tabella di destinazione BigQuery durante ogni esecuzione del trasferimento con i dati di tutti i file corrispondenti all'URI di origine. MIRROR sovrascrive una copia aggiornata dei dati nella tabella di destinazione. Se la tabella di destinazione utilizza un decoratore di partizione, l'esecuzione del trasferimento sovrascrive solo i dati nella partizione specificata. Una tabella di destinazione con un decoratore di partizione ha il formato my_table${run_date}, ad esempio my_table$20230809.
La ripetizione degli stessi trasferimenti incrementali o troncati in un giorno non causa la duplicazione dei dati. Tuttavia, se esegui più configurazioni di trasferimento diverse che interessano la stessa tabella di destinazione BigQuery, BigQuery Data Transfer Service potrebbe duplicare i dati.
Supporto dei caratteri jolly per gli URI Amazon S3
Se i dati di origine sono suddivisi in più file che condividono un nome base comune, puoi utilizzare un carattere jolly nell'URI quando carichi i dati. Un carattere jolly è costituito da un asterisco (*) e può essere utilizzato in qualsiasi punto dell'URI Amazon S3, ad eccezione del nome del bucket.
Sebbene sia possibile utilizzare più di un carattere jolly nell'URI Amazon S3, è possibile eseguire alcune ottimizzazioni quando l'URI Amazon S3 specifica un solo carattere jolly:
Esiste un limite più elevato al numero massimo di file per esecuzione del trasferimento.
Il carattere jolly si estenderà ai limiti delle directory. Ad esempio, l'URI Amazon S3
s3://my-bucket/*.csvcorrisponderà al files3://my-bucket/my-folder/my-subfolder/my-file.csv.
Esempi di URI Amazon S3
Esempio 1
Per caricare un singolo file da Amazon S3 in BigQuery, specifica l'URI Amazon S3 del file.
s3://my-bucket/my-folder/my-file.csv
Esempio 2
Per caricare tutti i file da un bucket Amazon S3 in BigQuery, specifica solo il nome del bucket, con o senza un carattere jolly.
s3://my-bucket/
o
s3://my-bucket/*
Tieni presente che s3://my-bucket* non è un URI Amazon S3 consentito, in quanto non è possibile utilizzare un carattere jolly nel nome del bucket.
Esempio 3
Per caricare tutti i file da Amazon S3 che condividono un prefisso comune, specifica il prefisso comune seguito da un carattere jolly.
s3://my-bucket/my-folder/*
Tieni presente che, a differenza del caricamento di tutti i file da un bucket Amazon S3 di primo livello, il carattere jolly deve essere specificato alla fine dell'URI Amazon S3 per caricare i file.
Esempio 4
Per caricare tutti i file da Amazon S3 con un percorso simile, specifica il prefisso comune seguito da un carattere jolly.
s3://my-bucket/my-folder/*.csv
Esempio 5
Tieni presente che i caratteri jolly si estendono alle directory, quindi tutti i file csv in my-folder, nonché nelle sottocartelle di my-folder, verranno caricati in BigQuery.
Se hai questi file di origine in una cartella logs:
s3://my-bucket/logs/logs.csv
s3://my-bucket/logs/system/logs.csv
s3://my-bucket/logs/some-application/system_logs.log
s3://my-bucket/logs/logs_2019_12_12.csv
Vengono identificati come segue:
s3://my-bucket/logs/*
Esempio 6
Se hai questi file di origine, ma vuoi trasferire solo quelli con logs.csv come nome file:
s3://my-bucket/logs.csv
s3://my-bucket/metadata.csv
s3://my-bucket/system/logs.csv
s3://my-bucket/system/users.csv
s3://my-bucket/some-application/logs.csv
s3://my-bucket/some-application/output.csv
Vengono identificati i file con logs.csv nel nome:
s3://my-bucket/*logs.csv
Esempio 7
L'utilizzo di più caratteri jolly consente di controllare meglio i file trasferiti, a scapito di limiti inferiori. L'utilizzo di più caratteri jolly significa che ogni carattere jolly corrisponderà solo alla fine di un percorso all'interno di una sottodirectory. Ad esempio, per i seguenti file di origine in Amazon S3:
s3://my-bucket/my-folder1/my-file1.csv
s3://my-bucket/my-other-folder2/my-file2.csv
s3://my-bucket/my-folder1/my-subfolder/my-file3.csv
s3://my-bucket/my-other-folder2/my-subfolder/my-file4.csv
Se l'intenzione è di trasferire solo my-file1.csv e my-file2.csv, utilizza il seguente valore per l'URI Amazon S3:
s3://my-bucket/*/*.csv
Poiché nessun carattere jolly si estende alle directory, questo URI limiterebbe il trasferimento solo ai file CSV presenti in my-folder1 e my-other-folder2. Le sottocartelle non sarebbero incluse nel trasferimento.
Chiavi di accesso AWS
L'ID della chiave di accesso e la chiave di accesso segreta vengono utilizzati per accedere ai dati Amazon S3 per tuo conto. Come best practice, crea un ID della chiave di accesso e una chiave di accesso segreta univoci specificamente per i trasferimenti da Amazon S3 per concedere l'accesso minimo a BigQuery Data Transfer Service. Per informazioni sulla gestione delle chiavi di accesso, consulta la documentazione di riferimento generale di AWS.
Limitazioni IP
Se utilizzi le limitazioni IP per l'accesso ad Amazon S3, devi aggiungere gli intervalli IP utilizzati dai worker di BigQuery Data Transfer Service all'elenco degli IP consentiti.
Per aggiungere intervalli IP come indirizzi IP pubblici consentiti ad Amazon S3, vedi Limitazioni IP.
Considerazioni sulla coerenza
Quando trasferisci dati da Amazon S3, è possibile che alcuni dati non vengano trasferiti a BigQuery, in particolare se i file sono stati aggiunti al bucket di recente. Un file dovrebbe diventare disponibile per BigQuery Data Transfer Service circa 5 minuti dopo essere stato aggiunto al bucket.
Best practice per i costi di trasferimento dei dati in uscita
I trasferimenti da Amazon S3 potrebbero non riuscire se la tabella di destinazione non è stata configurata correttamente. I motivi che potrebbero comportare una configurazione errata includono:
- La tabella di destinazione non esiste.
- Lo schema della tabella non è definito.
- Lo schema della tabella non è compatibile con i dati trasferiti.
Per evitare i costi di trasferimento dei dati in uscita da Amazon S3, devi prima testare un trasferimento con un sottoinsieme di file piccolo ma rappresentativo. Per piccolo si intende che il test deve avere una dimensione dei dati ridotta e un numero di file ridotto.
Prezzi
Per informazioni sui prezzi di BigQuery Data Transfer Service, consulta la pagina Prezzi.
Tieni presente che l'utilizzo di questo servizio può comportare costi al di fuori di Google. Per maggiori dettagli, consulta la pagina dei prezzi di Amazon S3.
Quote e limiti
BigQuery Data Transfer Service utilizza i job di caricamento per caricare i dati Amazon S3 in BigQuery. Tutte le quote e i limiti di BigQuery sui job di caricamento si applicano ai trasferimenti ricorrenti da Amazon S3, con le seguenti considerazioni aggiuntive:
| Valore | Limite |
|---|---|
| Dimensione massima per l'esecuzione del trasferimento del job di caricamento | 15 TB |
| Numero massimo di file per esecuzione del trasferimento quando l'URI Amazon S3 include 0 o 1 carattere jolly | 10.000.000 di file |
| Numero massimo di file per esecuzione del trasferimento quando l'URI Amazon S3 include più di 1 carattere jolly | 10.000 file |
Passaggi successivi
- Scopri come configurare un trasferimento da Amazon S3.
- Scopri di più sui parametri di runtime nei trasferimenti da S3.
- Scopri di più su BigQuery Data Transfer Service.