Caricare i dati Amazon S3 in BigQuery
Puoi caricare i dati da Amazon S3 a BigQuery utilizzando il connettore BigQuery Data Transfer Service per Amazon S3. Con BigQuery Data Transfer Service, puoi pianificare job di trasferimento ricorrenti che aggiungono i tuoi dati più recenti da Amazon S3 a BigQuery.
Prima di iniziare
Prima di creare un trasferimento di dati Amazon S3:
- Verifica di aver completato tutte le azioni necessarie per attivare BigQuery Data Transfer Service.
- Crea un set di dati BigQuery per archiviare i dati.
- Crea la tabella di destinazione per il trasferimento dei dati e specifica la definizione dello schema. La tabella di destinazione deve rispettare le regole di denominazione delle tabelle. I nomi delle tabelle di destinazione supportano anche i parametri.
- Recupera l'URI Amazon S3, l'ID chiave di accesso e la chiave di accesso segreta. Per informazioni sulla gestione delle chiavi di accesso, consulta la documentazione di AWS.
- Se intendi configurare le notifiche di esecuzione del trasferimento per Pub/Sub, devi disporre delle autorizzazioni
pubsub.topics.setIamPolicy
. Le autorizzazioni Pub/Sub non sono necessarie se configuri solo le notifiche email. Per saperne di più, consulta Notifiche di esecuzione di BigQuery Data Transfer Service.
Limitazioni
I trasferimenti di dati Amazon S3 sono soggetti alle seguenti limitazioni:
- La parte del bucket dell'URI Amazon S3 non può essere parametrizzata.
- I trasferimenti di dati da Amazon S3 con il parametro Write disposition impostato su
WRITE_TRUNCATE
trasferiranno tutti i file corrispondenti a Google Cloud durante ogni esecuzione. Ciò potrebbe comportare costi aggiuntivi per il trasferimento dei dati in uscita da Amazon S3. Per maggiori informazioni sui file trasferiti durante un'esecuzione, consulta Impatto della corrispondenza dei prefissi rispetto alla corrispondenza con caratteri jolly. - I trasferimenti di dati dalle regioni AWS GovCloud (
us-gov
) non sono supportati. - I trasferimenti di dati alle posizioni BigQuery Omni non sono supportati.
A seconda del formato dei dati di origine Amazon S3, potrebbero essere presenti limitazioni aggiuntive. Per ulteriori informazioni, vedi:
L'intervallo di tempo minimo tra i trasferimenti di dati ricorrenti è di 1 ora. L'intervallo predefinito per un trasferimento di dati ricorrente è di 24 ore.
Autorizzazioni obbligatorie
Prima di creare un trasferimento di dati Amazon S3:
Assicurati che la persona che crea il trasferimento di dati disponga delle seguenti autorizzazioni obbligatorie in BigQuery:
- Autorizzazioni
bigquery.transfers.update
per creare il trasferimento di dati - Autorizzazioni
bigquery.datasets.get
ebigquery.datasets.update
sul set di dati di destinazione
Il ruolo IAM predefinito
bigquery.admin
include le autorizzazionibigquery.transfers.update
,bigquery.datasets.update
ebigquery.datasets.get
. Per saperne di più sui ruoli IAM in BigQuery Data Transfer Service, consulta Controllo dell'accesso.- Autorizzazioni
Consulta la documentazione di Amazon S3 per assicurarti di aver configurato le autorizzazioni necessarie per attivare il trasferimento dei dati. Come minimo, ai dati di origine Amazon S3 deve essere applicata la policy gestita da AWS
AmazonS3ReadOnlyAccess
.
Configurare un trasferimento di dati Amazon S3
Per creare un trasferimento di dati Amazon S3:
Console
Vai alla pagina Trasferimenti di dati nella console Google Cloud .
Fai clic su
Crea trasferimento.Nella pagina Crea trasferimento:
Nella sezione Tipo di origine, per Origine, scegli Amazon S3.
Nella sezione Nome configurazione di trasferimento, per Nome visualizzato, inserisci un nome per il trasferimento, ad esempio
My Transfer
. Il nome del trasferimento può essere qualsiasi valore che ti consenta di identificare il trasferimento se devi modificarlo in un secondo momento.Nella sezione Opzioni di pianificazione:
Seleziona una Frequenza di ripetizione. Se selezioni Ore, Giorni, Settimane o Mesi, devi anche specificare una frequenza. Puoi anche selezionare Personalizzata per creare una frequenza di ripetizione più specifica. Se selezioni On demand, questo trasferimento di dati viene eseguito solo quando attivi manualmente il trasferimento.
Se applicabile, seleziona Inizia ora o Inizia all'ora impostata e fornisci una data di inizio e un'ora di esecuzione.
Nella sezione Impostazioni destinazione, per Set di dati di destinazione, scegli il set di dati che hai creato per archiviare i dati.
Nella sezione Dettagli origine dati:
- Per Tabella di destinazione, inserisci il nome della tabella che hai creato per archiviare i dati in BigQuery. I nomi delle tabelle di destinazione supportano i parametri.
- In URI Amazon S3, inserisci l'URI con il formato
s3://mybucket/myfolder/...
. Gli URI supportano anche i parametri. - In ID chiave di accesso, inserisci il tuo ID chiave di accesso.
- In Chiave di accesso segreta, inserisci la tua chiave di accesso segreta.
- Per Formato file, scegli il formato dei dati (JSON delimitato da nuova riga, CSV, Avro, Parquet o ORC).
- Per Istruzione di scrittura, scegli una delle seguenti opzioni:
WRITE_APPEND
per aggiungere in modo incrementale i nuovi dati alla tabella di destinazione esistente.WRITE_APPEND
è il valore predefinito per Preferenza di scrittura.WRITE_TRUNCATE
per sovrascrivere i dati nella tabella di destinazione durante ogni esecuzione del trasferimento di dati.
Per maggiori informazioni su come BigQuery Data Transfer Service importa i dati utilizzando
WRITE_APPEND
oWRITE_TRUNCATE
, consulta Importazione dati per i trasferimenti Amazon S3. Per maggiori informazioni sul campowriteDisposition
, vediJobConfigurationLoad
.Nella sezione Opzioni di trasferimento - tutti i formati:
- Per Numero di errori consentiti, inserisci un valore intero per il numero massimo di record non validi che possono essere ignorati.
- (Facoltativo) In Tipi di target decimali, inserisci un
elenco separato da virgole dei possibili tipi di dati SQL in cui potrebbero
essere convertiti i valori decimali di origine. Il tipo di dati SQL selezionato per la conversione dipende dalle seguenti condizioni:
- Il tipo di dati selezionato per la conversione sarà il primo nel seguente elenco che supporta la precisione e la scalabilità dei dati di origine, nel seguente ordine: NUMERIC, BIGNUMERIC, e STRING.
- Se nessuno dei tipi di dati elencati supporterà la precisione e la scalabilità, viene selezionato il tipo di dati che supporta l'intervallo più ampio nell'elenco specificato. Se un valore supera l'intervallo supportato durante la lettura dei dati di origine, verrà generato un errore.
- Il tipo di dati STRING supporta tutti i valori di precisione e scalabilità.
- Se questo campo viene lasciato vuoto, il tipo di dato predefinito sarà "NUMERIC,STRING" per ORC e "NUMERIC" per gli altri formati file.
- Questo campo non può contenere tipi di dati duplicati.
- L'ordine dei tipi di dati elencati in questo campo viene ignorato.
Se hai scelto CSV o JSON come formato file, nella sezione JSON, CSV, seleziona Ignora valori sconosciuti per accettare le righe contenenti valori che non corrispondono allo schema. I valori sconosciuti vengono ignorati. Per i file CSV, questa opzione ignora i valori extra alla fine di una riga.
Se hai scelto CSV come formato file, nella sezione CSV inserisci eventuali opzioni CSV aggiuntive per il caricamento dei dati.
Nel menu Service account, seleziona un service account tra quelli associati al tuo progettoGoogle Cloud . Puoi associare un service account al trasferimento di dati anziché utilizzare le tue credenziali utente. Per maggiori informazioni sull'utilizzo dei service account con i trasferimenti di dati, vedi Utilizzare i service account.
- Se hai eseguito l'accesso con un'identità federata, è necessario un service account per creare un trasferimento di dati. Se hai eseguito l'accesso con un Account Google, il service account per il trasferimento dei dati è facoltativo.
- Il service account deve disporre delle autorizzazioni richieste.
(Facoltativo) Nella sezione Opzioni di notifica:
- Fai clic sul pulsante di attivazione/disattivazione per abilitare le notifiche via email. Quando attivi questa opzione, l'amministratore del trasferimento riceve una notifica via email quando l'esecuzione di un trasferimento non riesce.
- In Seleziona un argomento Pub/Sub, scegli il nome dell'argomento o fai clic su Crea un argomento per crearne uno. Questa opzione configura le notifiche di esecuzione di Pub/Sub per il trasferimento di dati.
Fai clic su Salva.
bq
Inserisci il comando bq mk
e fornisci il flag di creazione del trasferimento: --transfer_config
.
bq mk \ --transfer_config \ --project_id=project_id \ --data_source=data_source \ --display_name=name \ --target_dataset=dataset \ --service_account_name=service_account \ --params='parameters'
Dove:
- project_id: (Facoltativo). L'ID del tuo progetto Google Cloud .
Se non viene fornito
--project_id
per specificare un progetto particolare, viene utilizzato il progetto predefinito. - data_source: obbligatorio. L'origine dati:
amazon_s3
. - display_name: obbligatorio. Il nome visualizzato della configurazione del trasferimento di dati. Il nome del trasferimento può essere qualsiasi valore che ti consenta di identificare il trasferimento se devi modificarlo in un secondo momento.
- dataset: obbligatorio. Il set di dati di destinazione per la configurazione del trasferimento dei dati.
- service_account: il nome del account di servizio utilizzato per
autenticare il trasferimento dei dati. Il account di servizio deve
essere di proprietà dello stesso
project_id
utilizzato per creare il trasferimento di dati e deve disporre di tutte le autorizzazioni richieste. parameters: obbligatorio. I parametri per la configurazione del trasferimento creata in formato JSON. Ad esempio:
--params='{"param":"param_value"}'
. Di seguito sono riportati i parametri per un trasferimento Amazon S3:- destination_table_name_template: obbligatorio. Il nome della tabella di destinazione.
data_path: obbligatorio. L'URI Amazon S3, nel seguente formato:
s3://mybucket/myfolder/...
Gli URI supportano anche i parametri.
access_key_id: obbligatorio. Il tuo ID chiave di accesso.
secret_access_key: obbligatorio. La tua chiave di accesso segreta.
file_format: (Facoltativo). Indica il tipo di file che vuoi trasferire:
CSV
,JSON
,AVRO
,PARQUET
oORC
. Il valore predefinito èCSV
.write_disposition: (Facoltativo).
WRITE_APPEND
trasferirà solo i file modificati dall'ultima esecuzione riuscita.WRITE_TRUNCATE
trasferirà tutti i file corrispondenti, inclusi quelli trasferiti in un'esecuzione precedente. Il valore predefinito èWRITE_APPEND
.max_bad_records: (Facoltativo). Il numero di record errati consentiti. Il valore predefinito è
0
.decimal_target_types: (Facoltativo). Un elenco separato da virgole dei possibili tipi di dati SQL in cui potrebbero essere convertiti i valori decimali di origine. Se questo campo non viene fornito, il tipo di dato predefinito sarà "NUMERIC,STRING" per ORC e "NUMERIC" per gli altri formati file.
ignore_unknown_values: (facoltativo) viene ignorato se file_format non è
JSON
oCSV
. Se ignorare i valori sconosciuti nei dati.field_delimiter: facoltativo e valido solo quando
file_format
èCSV
. Il carattere che separa i campi. Il valore predefinito è una virgola.skip_leading_rows: facoltativo e valido solo quando file_format è
CSV
. Indica il numero di righe di intestazione che non vuoi importare. Il valore predefinito è0
.allow_quoted_newlines: facoltativo e valido solo quando file_format è
CSV
. Indica se consentire i caratteri di fine riga all'interno dei campi tra virgolette.allow_jagged_rows: facoltativo e valido solo quando file_format è
CSV
. Indica se accettare le righe che non hanno le colonne finali facoltative. I valori mancanti verranno compilati con valori NULL.
Ad esempio, il seguente comando crea un trasferimento di dati Amazon S3 denominato
My Transfer
utilizzando un valore data_path
di
s3://mybucket/myfile/*.csv
, il set di dati di destinazione mydataset
e file_format
CSV
. Questo esempio include valori non predefiniti per i parametri facoltativi
associati a CSV
file_format.
Il trasferimento dei dati viene creato nel progetto predefinito:
bq mk --transfer_config \
--target_dataset=mydataset \
--display_name='My Transfer' \
--params='{"data_path":"s3://mybucket/myfile/*.csv",
"destination_table_name_template":"MyTable",
"file_format":"CSV",
"write_disposition":"WRITE_APPEND",
"max_bad_records":"1",
"ignore_unknown_values":"true",
"field_delimiter":"|",
"skip_leading_rows":"1",
"allow_quoted_newlines":"true",
"allow_jagged_rows":"false"}' \
--data_source=amazon_s3
Dopo aver eseguito il comando, ricevi un messaggio simile al seguente:
[URL omitted] Please copy and paste the above URL into your web browser and
follow the instructions to retrieve an authentication code.
Segui le istruzioni e incolla il codice di autenticazione nella riga di comando.
API
Utilizza il metodo projects.locations.transferConfigs.create
e fornisci un'istanza della risorsa TransferConfig
.
Java
Prima di provare questo esempio, segui le istruzioni di configurazione di Java nella guida rapida di BigQuery per l'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API BigQuery Java.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Impatto della corrispondenza prefisso rispetto alla corrispondenza con caratteri jolly
L'API Amazon S3 supporta la corrispondenza dei prefissi, ma non quella dei caratteri jolly. Tutti i file Amazon S3 che corrispondono a un prefisso verranno trasferiti in Google Cloud. Tuttavia, solo quelli che corrispondono all'URI Amazon S3 nella configurazione del trasferimento verranno effettivamente caricati in BigQuery. Ciò potrebbe comportare costi eccessivi per il trasferimento dei dati in uscita da Amazon S3 per i file trasferiti ma non caricati in BigQuery.
Ad esempio, considera questo percorso dei dati:
s3://bucket/folder/*/subfolder/*.csv
Oltre a questi file nella posizione di origine:
s3://bucket/folder/any/subfolder/file1.csv
s3://bucket/folder/file2.csv
In questo modo, tutti i file Amazon S3 con il prefisso s3://bucket/folder/
verranno trasferiti a Google Cloud. In questo esempio, verranno trasferiti sia file1.csv
sia
file2.csv
.
Tuttavia, solo i file corrispondenti a s3://bucket/folder/*/subfolder/*.csv
verranno
caricati in BigQuery. In questo esempio, in BigQuery verrà caricato solo file1.csv
.
Risolvere i problemi di configurazione del trasferimento
Se riscontri problemi durante la configurazione del trasferimento dei dati, consulta Problemi di trasferimento da Amazon S3.
Passaggi successivi
- Per un'introduzione ai trasferimenti di dati Amazon S3, consulta Panoramica dei trasferimenti di Amazon S3
- Per una panoramica di BigQuery Data Transfer Service, consulta Introduzione a BigQuery Data Transfer Service.
- Per informazioni sull'utilizzo dei trasferimenti di dati, inclusi come ottenere informazioni su una configurazione di trasferimento, elencare le configurazioni di trasferimento e visualizzare la cronologia di esecuzione di un trasferimento, consulta Utilizzare i trasferimenti.
- Scopri come caricare i dati con operazioni cross-cloud.