Introduzione ai trasferimenti di Archiviazione blob
BigQuery Data Transfer Service per Azure Blob Storage ti consente pianificare e gestire job di caricamento ricorrenti da Archiviazione BLOB di Azure Azure Data Lake Storage Gen2 in BigQuery.
Formati di file supportati
BigQuery Data Transfer Service attualmente supporta il caricamento di dati da Blob Storage nei seguenti formati:
- Valori separati da virgola (CSV)
- JSON (delimitato da nuova riga)
- Avro
- Parquet
- ORC
Tipi di compressione supportati
BigQuery Data Transfer Service per l'archiviazione BLOB supporta il caricamento di dati compressi. I tipi di compressione supportati BigQuery Data Transfer Service corrisponde ai tipi di compressione supportati Job di caricamento BigQuery. Per ulteriori informazioni, vedi Caricamento di dati compressi e non compressi.
Prerequisiti per il trasferimento
Per caricare i dati da un'origine dati Archiviazione BLOB, raccogli innanzitutto seguenti:
- Il nome dell'account Archiviazione BLOB, il nome del container e il percorso dei dati (facoltativo) per i dati di origine. Il campo Percorso dati è facoltativo; viene utilizzato per associare prefissi di oggetti ed estensioni di file comuni. Se il percorso dei dati viene omesso, tutti i file nel contenitore vengono trasferiti.
- Un token di firma di accesso condiviso (SAS) di Azure che concede l'accesso in lettura al tuo origine dati. Per informazioni dettagliate sulla creazione di un token SAS, consulta Firma di accesso condiviso (SAS).
Parametrizzazione del runtime del trasferimento
Il percorso dei dati di Archiviazione BLOB e la tabella di destinazione possono essere con parametri, in modo da poter caricare i dati dai container organizzati per data. I parametri utilizzati dai trasferimenti di Archiviazione BLOB sono gli stessi utilizzati dai trasferimenti di Cloud Storage. Per maggiori dettagli, vedi Parametri di runtime nei trasferimenti:
Importazione dei dati per i trasferimenti di Azure Blob
Puoi specificare la modalità di caricamento dei dati in BigQuery selezionando un'opzione Scrivi la preferenza nella configurazione di trasferimento quando configurare un trasferimento BLOB di Azure.
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 dal trasferimento riuscito precedente a una tabella di destinazione BigQuery. 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 trova i file con l'ora dell'ultima modifica che hanno
successive al timestamp dell'ultimo trasferimento riuscito,
BigQuery Data Transfer Service trasferisce questi file 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 poi
crea un trasferimento incrementale dal bucket Cloud Storage,
programmato per essere eseguito una volta al giorno alle ore 03:00Z, a partire dal giorno 01-07-2023T03:00Z.
- Il 01-07-2023T03:00Z inizia la prima esecuzione di 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 va a buon fine e
BigQuery Data Transfer Service carica correttamente
file_1
nella tabella BigQuery di destinazione. - La successiva esecuzione di trasferimento, alle 2023-07-02T03:00Z, non rileva file in cui
La proprietà timestamp
updated
è maggiore rispetto all'ultima esecuzione di trasferimento andata a buon fine (01-07-2023T03:00Z). L'esecuzione del trasferimento avviene correttamente senza caricare dati aggiuntivi nella tabella BigQuery di destinazione.
L'esempio precedente mostra in che modo BigQuery Data Transfer Service esamina la proprietà timestamp updated
del file di origine per determinare se sono state apportate modifiche ai file di origine e per trasferirle, se 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
. La
Il timestamp di updated
per file_2
è
l'ora in cui è stato creato il file.
- La successiva esecuzione di trasferimento, alle 2023-07-03T03:00Z, rileva che
file_2
ha un Timestampupdated
maggiore dell'ultima esecuzione di trasferimento riuscita (2023-07-01T03:00Z). Supponiamo che all'avvio dell'esecuzione del trasferimento non vada a buon fine a causa un errore temporaneo. In questo scenario,file_2
non viene caricato nel tabella BigQuery di destinazione. Il timestamp dell'ultima esecuzione di trasferimento riuscita rimane 01-07-2023T03: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 va a buon fine senza caricare dati aggiuntivi 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. Qualsiasi modifica ai file vengono trasferiti alla successiva esecuzione riuscita. Eventuali trasferimenti riusciti successivi a un trasferimento non riuscito non causano dati duplicati. In caso di trasferimento non riuscito, puoi anche scegliere di attivare manualmente un trasferimento al di fuori dell'orario programmato regolarmente.
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 nuova copia di
nella tabella di destinazione. Se la tabella di destinazione utilizza una partizione
decorator, 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ù trasferimenti diversi che interessano la stessa tabella di destinazione BigQuery, Questo può causare la duplicazione dei dati da parte di BigQuery Data Transfer Service.
Supporto dei caratteri jolly per il percorso dei dati di Archiviazione BLOB
Puoi selezionare i dati di origine separati in più file specificando uno o più caratteri jolly asterisco (*
) nel percorso dei dati.
Sebbene nel percorso dei dati sia possibile utilizzare più di un carattere jolly, è possibile eseguire un'ottimizzazione se viene utilizzato un solo carattere jolly:
- Esiste un limite più elevato per il numero massimo di file. per esecuzione di trasferimento.
- Il carattere jolly estenderà i limiti della directory. Ad esempio, il percorso dei dati
my-folder/*.csv
corrisponderà al filemy-folder/my-subfolder/my-file.csv
.
Esempi di percorsi dati di archiviazione BLOB
Di seguito sono riportati esempi di percorsi di dati validi per un'archiviazione BLOB
trasferimento. Tieni presente che i percorsi dei dati non iniziano con /
.
Esempio: file singolo
Per caricare un singolo file da Archiviazione BLOB in BigQuery, specifica il nome file di Archiviazione BLOB:
my-folder/my-file.csv
Esempio: Tutti i file
Per caricare tutti i file da un contenitore Blob Storage in BigQuery, imposta il percorso dei dati su un'unica stringa jolly:
*
Esempio: file con un prefisso comune
Per caricare tutti i file da Blob Storage che condividono un prefisso comune, specifica il prefisso comune con o senza un carattere jolly:
my-folder/
o
my-folder/*
Esempio: file con un percorso simile
Per caricare tutti i file da Blob Storage con un percorso simile, specifica il prefisso e il suffisso comuni:
my-folder/*.csv
Quando utilizzi un solo carattere jolly, questo estende le directory. In questo esempio,
sono stati selezionati tutti i file CSV in my-folder
e tutti i file CSV in ogni
sottocartella di my-folder
.
Esempio: carattere jolly alla fine del percorso
Considera il seguente percorso dati:
logs/*
Sono selezionati tutti i seguenti file:
logs/logs.csv
logs/system/logs.csv
logs/some-application/system_logs.log
logs/logs_2019_12_12.csv
Esempio: carattere jolly all'inizio del percorso
Considera il seguente percorso dati:
*logs.csv
Sono selezionati tutti i seguenti file:
logs.csv
system/logs.csv
some-application/logs.csv
E nessuno dei seguenti file è selezionato:
metadata.csv
system/users.csv
some-application/output.csv
Esempio: più caratteri jolly
Utilizzando più caratteri jolly, ottieni un maggiore controllo sulla selezione dei file, Costo dei limiti inferiori. Quando utilizzi più caratteri jolly, ogni carattere jolly si estende a una sola sottodirectory.
Considera il seguente percorso dei dati:
*/*.csv
Vengono selezionati entrambi i seguenti file:
my-folder1/my-file1.csv
my-other-folder2/my-file2.csv
Né uno dei seguenti file è selezionato:
my-folder1/my-subfolder/my-file3.csv
my-other-folder2/my-subfolder/my-file4.csv
Firma di accesso condiviso
Il token SAS di Azure viene utilizzato per accedere ai dati di Archiviazione BLOB per tuo conto. Per creare un token SAS per il trasferimento:
- Crea o utilizza un utente di Archiviazione BLOB esistente per accedere al di archiviazione del tuo container BLOB.
Crea un token SAS a livello di account di archiviazione. Per creare un token SAS usando il portale Azure, segui questi passaggi:
- Per Servizi consentiti, seleziona Blob.
- In Tipi di risorse consentiti, seleziona sia Contenitore sia Oggetto.
- In Autorizzazioni consentite, seleziona Lettura e Elenco.
- La data e l'ora di scadenza predefiniti per i token SAS sono 8 ore. Imposta una scadenza che sia adatta alla tua pianificazione dei trasferimenti.
- Non specificare alcun indirizzo IP nel campo Indirizzi IP consentiti.
- In Protocolli consentiti, seleziona Solo HTTPS.
Dopo aver creato il token SAS, prendi nota del valore del token SAS che viene visualizzato. Ti servirà durante la configurazione dei trasferimenti.
Restrizioni IP
Se limiti l'accesso alle tue risorse Azure usando un firewall di Archiviazione di Azure, devi aggiungere gli intervalli IP utilizzati dai worker di BigQuery Data Transfer Service degli IP consentiti.
Per aggiungere intervalli IP come IP consentiti ai firewall di Azure Storage, consulta Restrizioni IP.
Considerazioni sulla coerenza
Dovrebbero essere necessari circa 10 minuti prima che un file diventi disponibile per BigQuery Data Transfer Service dopo essere stato aggiunto al contenitore Blob Storage.
Best practice per il controllo dei costi in uscita
I trasferimenti dall'archiviazione BLOB potrebbero non riuscire se la tabella di destinazione è non è configurato correttamente. Le possibili cause di una configurazione non corretta sono: le seguenti:
- La tabella di destinazione non esiste.
- Lo schema della tabella non è definito.
- Lo schema della tabella non è compatibile con i dati trasferiti.
Per evitare costi aggiuntivi per il traffico in uscita da archiviazione BLOB, testa prima un trasferimento con un sottoinsieme ridotto ma rappresentativo di file. Assicurati che questo test sia di piccole dimensioni sia per quanto riguarda le dimensioni dei dati sia per il numero di file.
È importante notare inoltre che la corrispondenza dei prefissi per i percorsi di dati avviene prima vengono trasferiti da Archiviazione BLOB, ma la corrispondenza con caratteri jolly avvengono all'interno di Google Cloud. Questa distinzione potrebbe aumentare i costi di uscita di Blob Storage per i file trasferiti in Google Cloud, ma non caricati in BigQuery.
Considera ad esempio questo percorso dati:
folder/*/subfolder/*.csv
Entrambi i file seguenti vengono trasferiti in Google Cloud,
hanno il prefisso folder/
:
folder/any/subfolder/file1.csv
folder/file2.csv
Tuttavia, solo il file folder/any/subfolder/file1.csv
viene caricato in
BigQuery, perché corrisponde al percorso dei dati completo.
Prezzi
Per ulteriori informazioni, vedi Prezzi di BigQuery Data Transfer Service.
L'utilizzo di questo servizio può comportare anche costi esterni a Google. Per maggiori informazioni le informazioni, vedi Prezzi dell'archiviazione BLOB.
Quote e limiti
BigQuery Data Transfer Service utilizza i job di caricamento per caricare l'archiviazione BLOB in BigQuery. Tutto BigQuery quote e limiti sul carico si applicano a trasferimenti ricorrenti di Archiviazione BLOB, con quanto segue considerazioni aggiuntive:
Limite | Predefinito |
---|---|
Dimensioni massime per esecuzione di trasferimento del job di caricamento | 15 TB |
Numero massimo di file per esecuzione di trasferimento quando Il percorso dei dati di Archiviazione BLOB include 0 o 1 caratteri jolly | 10.000.000 file |
Numero massimo di file per esecuzione di trasferimento quando il percorso dei dati di Archiviazione blob include due o più caratteri jolly | 10.000 file |
Passaggi successivi
- Scopri di più sulla configurazione di un trasferimento di Blob Storage.
- Scopri di più sui parametri di runtime nei trasferimenti.
- Scopri di più su BigQuery Data Transfer Service.