Introduzione ai trasferimenti di Amazon S3
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 dei 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 supportati dai job di caricamento BigQuery. Per maggiori informazioni le informazioni, vedi Caricamento di dati compressi e non compressi.
Prerequisiti di Amazon S3
Per caricare i dati da un'origine dati Amazon S3, devi:
- Fornisci l'URI Amazon S3 per i tuoi dati di origine
- Disporre dell'ID della tua chiave di accesso
- Avere la chiave di accesso segreta
- Imposta almeno il criterio gestito da AWS
AmazonS3ReadOnlyAccess
sui dati di origine Amazon S3
URI Amazon S3
Quando fornisci l'URI Amazon S3, il percorso deve essere nel seguente formato:
s3://bucket/folder1/folder2/...
È richiesto solo il nome del bucket di primo livello.
I nomi delle cartelle sono facoltativi. Se specifichi un URI che include solo il bucket
tutti i file nel bucket vengono trasferiti e caricati
in BigQuery.
Parametrizzazione del runtime del trasferimento di Amazon S3
L'URI Amazon S3 e la tabella di destinazione possono essere entrambi parametrizzati, consentendoti di caricare i dati dai bucket Amazon S3 organizzati per data. Tieni presente che la porzione del bucket dell'URI non può essere parametrizzata. I parametri utilizzati dai trasferimenti Amazon S3 sono gli stessi utilizzati da Cloud Storage trasferimenti.
Per maggiori dettagli, vedi Parametri di runtime nei trasferimenti.
Importazione dei dati per i trasferimenti di Amazon S3
Puoi specificare la modalità di caricamento dei dati in BigQuery selezionando un'opzione Scrivi la preferenza nella configurazione di trasferimento quando configurare un trasferimento Amazon S3.
Sono disponibili due tipi di preferenze di scrittura: i trasferimenti incrementali e trasferimenti troncati.Trasferimenti incrementali
Una configurazione di trasferimento con una scrittura APPEND
o WRITE_APPEND
la preferenza, chiamata anche trasferimento incrementale, aggiunge in modo incrementale nuovi dati
dal precedente trasferimento riuscito a una destinazione BigQuery
tabella. Quando una configurazione di trasferimento viene eseguita con una preferenza di scrittura APPEND
,
BigQuery Data Transfer Service filtra i file che sono stati modificati dall'ultima esecuzione di trasferimento riuscita. Per determinare quando un file viene modificato,
BigQuery Data Transfer Service esamina i metadati del file per una proprietà "data di ultima modifica". Ad esempio, BigQuery Data Transfer Service esamina la proprietà timestamp updated
in un file Cloud Storage. Se BigQuery Data Transfer Service rileva file con una "data di ultima modifica" successiva al timestamp dell'ultimo trasferimento riuscito, li trasferisce in un trasferimento incrementale.
Per dimostrare come funzionano i trasferimenti incrementali, considera quanto segue:
Esempio di trasferimento in Cloud Storage. Un utente crea un file in un
Bucket Cloud Storage all'ora 2023-07-01T00:00Z denominato file_1
. Il
timestamp updated
per file_1
è
l'ora in cui è stato creato il file. L'utente quindi
crea un trasferimento incrementale dal bucket Cloud Storage,
programmata per essere eseguita una volta al giorno alle 03:00Z, a partire dal 2023-07-01T03:00Z.
- Il 01-07-2023T03:00Z inizia la prima esecuzione di trasferimento. Poiché questa è la prima
per questa configurazione, BigQuery Data Transfer Service tenta di
carica tutti i file corrispondenti all'URI di origine nella destinazione
Tabella BigQuery. L'esecuzione del trasferimento ha esito positivo
BigQuery Data Transfer Service carica correttamente
file_1
nella destinazione Tabella BigQuery. - L'esecuzione di trasferimento successiva, il 02-07-2023T03:00Z, non rileva file in cui la proprietà del timestamp
updated
è maggiore rispetto all'ultima esecuzione di trasferimento riuscita (01-07-2023T03:00Z). L'esecuzione del trasferimento avviene correttamente senza caricare dati aggiuntivi nella tabella BigQuery di destinazione.
L'esempio precedente mostra come BigQuery Data Transfer Service esamina le
Proprietà timestamp updated
del file di origine per determinare se sono state apportate modifiche
apportate ai file di origine e di trasferire le eventuali modifiche rilevate.
Seguendo lo stesso esempio, supponiamo che l'utente crei un altro file in
il bucket Cloud Storage alle ore 2023-07-03T00:00Z, denominato file_2
. Il
timestamp updated
per file_2
è
l'ora in cui è stato creato il file.
- L'esecuzione di trasferimento successiva, il 03-07-2023 alle ore 03:00:00 UTC, rileva che
file_2
ha unupdated
timestamp maggiore dell'ultima esecuzione di trasferimento riuscita (01-07-2023 alle ore 03:00:00 UTC). Supponiamo che all'avvio l'esecuzione del trasferimento non vada a buon fine a causa di un errore temporaneo. In questo scenario,file_2
non viene caricato nella tabella BigQuery di destinazione. Ultimo trasferimento riuscito il timestamp dell'esecuzione rimane su 2023-07-01T03:00Z. - L'esecuzione di trasferimento successiva, il 04-07-2023T03:00Z, rileva che
file_2
ha unupdated
timestamp maggiore dell'ultima esecuzione di trasferimento riuscita (01-07-2023T03:00Z). Questa volta l'esecuzione del trasferimento viene completata senza problemi, quindi caricafile_2
nella tabella BigQuery di destinazione. - L'esecuzione di trasferimento successiva, il 05-07-2023 alle 03:00 UTC, non rileva file in cui il timestamp
updated
è maggiore dell'ultima esecuzione di trasferimento riuscita (04-07-2023 alle 03:00 UTC). L'esecuzione del trasferimento riesce senza caricare altri dati nella tabella BigQuery di destinazione.
L'esempio precedente mostra che quando un trasferimento non va a buon fine, nessun file viene trasferiti nella tabella di destinazione BigQuery. Eventuali modifiche ai file vengono trasferite alla successiva esecuzione del trasferimento riuscita. Eventuali trasferimenti riusciti successivi a un trasferimento non riuscito non causano dati duplicati. Nel caso di un trasferimento non riuscito, puoi anche scegliere di attivare manualmente un trasferimento. al di fuori del suo orario regolare.
Trasferimenti troncati
Una configurazione di trasferimento con una scrittura MIRROR
o WRITE_TRUNCATE
la preferenza, chiamata anche "trasferimento troncato", sovrascrive i dati nella
Tabella di destinazione BigQuery durante ogni esecuzione di trasferimento con dati
da tutti i file corrispondenti all'URI di origine. MIRROR
sovrascrive una nuova copia di
nella tabella di destinazione. Se la tabella di destinazione utilizza un decoratore
partizione, l'esecuzione del trasferimento sovrascrive solo i dati nella partizione specificata. R
con un decorator della 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 dati duplicati. 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 separati in più file che condividono una 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 posizione nell'URI di Amazon S3, tranne per il nome del bucket.
Sebbene nell'URI Amazon S3 sia possibile utilizzare più di un carattere jolly, è possibile eseguire alcune ottimizzazioni quando l'URI Amazon S3 specifica un solo carattere jolly:
Esiste un limite più elevato per il numero massimo di file per esecuzione del trasferimento.
Il carattere jolly estenderà i limiti della directory. Ad esempio, l'URI Amazon S3
s3://my-bucket/*.csv
corrisponderà 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, come carattere jolly
e non possono essere utilizzate
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 affinché i file vengano caricati.
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, pertanto tutti i file csv
in my-folder
, nonché nelle sottodirectory di my-folder
, verranno caricati in BigQuery.
Se questi file di origine sono presenti 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
viene identificato come segue:
s3://my-bucket/logs/*
Esempio 6
Se hai questi file di origine, ma vuoi trasferire solo quelli che contengono
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
il codice seguente identifica i file con logs.csv
nel nome:
s3://my-bucket/*logs.csv
Esempio 7
L'utilizzo di più caratteri jolly consente di avere un maggiore controllo sui file trasferiti, a costo di limiti inferiori. L'utilizzo di più caratteri jolly significa che ogni carattere jolly corrisponderà solo fino alla fine di un percorso all'interno di una sottodirectory. Ad esempio, per i seguenti file sorgente 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 è trasferire solo my-file1.csv
e my-file2.csv
, utilizza quanto segue come valore per l'URI Amazon S3:
s3://my-bucket/*/*.csv
Poiché nessuno dei caratteri jolly si estende a più directory, questo URI limiterebbe il trasferimento solo ai file CSV in my-folder1
e my-other-folder2
. Le sottocartelle non vengono 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 di Amazon S3 su per conto tuo. Come best practice, crea un ID chiave di accesso e un accesso segreto univoci specifica per i trasferimenti di Amazon S3, in modo da fornire un accesso minimo BigQuery Data Transfer Service. Per informazioni sulla gestione delle chiavi di accesso, consulta le Documentazione di riferimento generale di AWS.
Considerazioni sulla coerenza
Quando trasferisci i dati da Amazon S3, è possibile che alcuni di questi non vengano trasferiti in BigQuery, in particolare se i file sono stati aggiunti al bucket di recente. Ci vorranno circa 10 minuti per rendere disponibile un file a BigQuery Data Transfer Service dopo averlo aggiunto nel bucket. In alcuni casi, tuttavia, potrebbero essere necessari più di 10 minuti.
Per ulteriori informazioni sul modello di coerenza di Amazon S3, consulta Modello di coerenza dei dati di Amazon S3 nella documentazione di Amazon S3.
Best practice per i costi del trasferimento di dati in uscita
I trasferimenti da Amazon S3 potrebbero non riuscire se la tabella di destinazione non è stata configurato 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 del trasferimento di dati in uscita da Amazon S3, devi prima testare un trasferimento con un sottoinsieme piccolo ma rappresentativo dei file. Piccolo significa che il test deve avere dimensioni ridotte dei dati e un numero ridotto di file.
Prezzi
Per informazioni sui prezzi di BigQuery Data Transfer Service, consulta la sezione Prezzi .
Tieni presente che utilizzando questo servizio potresti incorrere in costi esterni a 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 in BigQuery. A tutti i limiti e le quote di BigQuery per i job di caricamento si applicano i trasferimenti ricorrenti di Amazon S3, con le seguenti considerazioni aggiuntive:
Valore | Limite |
---|---|
Dimensione massima per esecuzione di trasferimento del job di caricamento | 15 TB |
Numero massimo di file per esecuzione di trasferimento quando l'URI Amazon S3 include 0 o 1 caratteri jolly | 10.000.000 file |
Numero massimo di file per esecuzione di trasferimento quando l'URI Amazon S3 include più di un carattere jolly | 10.000 file |
Passaggi successivi
- Scopri come configurare un trasferimento di Amazon S3.
- Scopri di più sui parametri di runtime nei trasferimenti su S3.
- Scopri di più su BigQuery Data Transfer Service.