Trasferimenti di Amazon S3
Il connettore BigQuery Data Transfer Service per Amazon S3 consente di pianificare automaticamente e gestire job di caricamento ricorrenti da Amazon S3 in BigQuery.
Prima di iniziare
Prima di creare un trasferimento di dati Amazon S3:
- Verifica di aver completato tutte le azioni richieste per abilitare 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. Tabella di destinazione devono seguire le regole di denominazione delle tabelle. I nomi delle tabelle di destinazione supportano anche i parametri.
- Recupera l'URI Amazon S3, l'ID della chiave di accesso e la chiave di accesso segreta. Per informazioni sulla gestione delle chiavi di accesso, consulta le Documentazione AWS.
- Se intendi configurare le notifiche di esecuzione del trasferimento per Pub/Sub,
deve avere le autorizzazioni
pubsub.topics.setIamPolicy
. Pub/Sub le autorizzazioni non sono necessarie se hai appena configurato le notifiche via email. Per maggiori informazioni le informazioni, vedi 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.
- Trasferimenti di dati da Amazon S3 con il parametro Write disposition impostato su
WRITE_TRUNCATE
trasferirà tutti i file corrispondenti in Google Cloud durante ogni vengono eseguiti tutti i test delle unità. Ciò potrebbe comportare costi aggiuntivi per il trasferimento di dati in uscita da Amazon S3. Per per ulteriori informazioni su quali file vengono trasferiti durante l'esecuzione, vedi Impatto della corrispondenza del prefisso rispetto alla corrispondenza con caratteri jolly. - I trasferimenti di dati dalle regioni AWS GovCloud (
us-gov
) non sono supportati. - Trasferimenti di dati alle località di BigQuery Omni non sono supportati.
A seconda del formato dei dati di origine Amazon S3, potrebbero essere limitazioni aggiuntive. Per ulteriori informazioni, vedi:
L'intervallo di tempo minimo tra un trasferimento di dati ricorrente e l'altro è di 24 ore. Il valore 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 di quanto segue autorizzazioni in BigQuery:
bigquery.transfers.update
autorizzazioni per creare il trasferimento di dati- Autorizzazioni
bigquery.datasets.get
ebigquery.datasets.update
attive il set di dati di destinazione
Il ruolo IAM predefinito
bigquery.admin
includebigquery.transfers.update
,bigquery.datasets.update
e Autorizzazionibigquery.datasets.get
. Per ulteriori informazioni sui ruoli IAM in BigQuery Data Transfer Service, consulta Controllo dell'accesso.Consulta la documentazione di Amazon S3 per assicurarti di avere configurato le eventuali autorizzazioni necessarie per attivare il trasferimento di dati. Come minimo, i dati di origine Amazon S3 devono avere il criterio gestito da AWS
AmazonS3ReadOnlyAccess
applicato.
Configurare un trasferimento 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 del trasferimento, ad esempio
My Transfer
. Il nome del trasferimento può essere qualsiasi valore che ti consenta di identificare il trasferimento, se necessario per modificarlo in un secondo momento.Nella sezione Opzioni di pianificazione:
Seleziona Frequenza di ripetizione. Se selezioni Ore, Giorni, Settimane o Mesi, devi anche specificare una frequenza. Tu Puoi anche selezionare Personalizzato per creare una ripetizione più specifica frequenza. Se selezioni On demand, questo trasferimento di dati verrà eseguito solo quando il trasferimento viene attivato manualmente.
Se applicabile, seleziona Inizia ora o Inizia all'ora impostata. e specificare una data di inizio e un'ora di esecuzione.
Nella sezione Impostazioni destinazione, per Set di dati di destinazione, scegli il set di dati creato per archiviare i tuoi dati.
Nella sezione Dettagli origine dati:
- In Tabella di destinazione, inserisci il nome della tabella che hai creato. per archiviare i dati in BigQuery. Nomi tabella di destinazione supportare i parametri.
- In URI Amazon S3, inserisci l'URI nel seguente formato
s3://mybucket/myfolder/...
. Gli URI supportano anche parametri. - In ID chiave di accesso, inserisci l'ID della tua chiave di accesso.
- In Chiave di accesso segreta, inserisci la tua chiave di accesso segreta.
- In Formato file, scegli il formato dei dati: JSON delimitato da nuova riga, CSV, Avro, Parquet o ORC.
Per Disposizione di scrittura, scegli:
WRITE_APPEND
per aggiungere in modo incrementale nuovi dati al tuo tabella di destinazione esistente.WRITE_APPEND
è l'impostazione predefinita per la preferenza di scrittura.WRITE_TRUNCATE
per sovrascrivere i dati nella tabella di destinazione. durante l'esecuzione di ogni trasferimento di dati.
Per ulteriori informazioni su come BigQuery Data Transfer Service importa i dati utilizzando
WRITE_APPEND
oWRITE_TRUNCATE
, consulta Importazione dati per i trasferimenti Amazon S3. Per ulteriori informazioni sul campowriteDisposition
, consultaJobConfigurationLoad
Nella sezione Opzioni di trasferimento - tutti i formati:
- In Numero di errori consentiti, inserisci un valore intero per il numero massimo di record non validi che è possibile ignorare.
- (Facoltativo) Per i tipi di targeting decimale, inserisci i valori separati da virgole
l'elenco dei possibili tipi di dati SQL a cui i valori decimali di origine potrebbero
in cui eseguire la conversione. Quale tipo di dati SQL è selezionato per la conversione
dipende dalle seguenti condizioni:
- Il tipo di dati selezionato per la conversione sarà il primo digita il 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 scala, il tipo di dati che supporta la più ampia gamma sia selezionato l'elenco specificato. Se un valore supera il limite supportato durante la lettura dei dati di origine, verrà generato un errore.
- Il tipo di dati STRING supporta tutti i valori di precisione e scala.
- Se questo campo viene lasciato vuoto, per impostazione predefinita il tipo di dati sarà "NUMERIC,STRING" per ORC e "NUMERIC" per l'altro file formati.
- Questo campo non può contenere tipi di dati duplicati.
- L'ordine dei tipi di dati elencati in questo campo viene ignorato.
Se hai scelto il formato file CSV o JSON, il file JSON,CSV seleziona Ignora valori sconosciuti per accettare le righe che contengono valori che non corrispondono allo schema. I valori sconosciuti vengono ignorati. Per CSV, questa opzione ignora i valori aggiuntivi alla fine di una riga.
Se hai scelto CSV come formato file, inserisci uno qualsiasi nella sezione CSV altre opzioni CSV per caricare i dati.
Nel menu Account di servizio, seleziona un account di servizio dagli account di servizio associati progetto Google Cloud. Puoi associare un account di servizio a il trasferimento dei dati anziché utilizzare le tue credenziali utente. Per maggiori informazioni informazioni sull'uso di account di servizio con i trasferimenti di dati, vedi Utilizzare gli account di servizio.
- Se hai eseguito l'accesso con un'identità federata: è necessario un account di servizio per creare un trasferimento di dati. Se hai firmato con un Account Google, poi l'account di servizio per il trasferimento di dati è facoltativo.
- L'account di servizio deve disporre delle autorizzazioni richieste.
(Facoltativo) Nella sezione Opzioni di notifica:
- Fai clic sul pulsante di attivazione/disattivazione per abilitare le notifiche via email. Se attivi questa opzione, l'amministratore dei trasferimenti riceve una notifica via email quando un trasferimento di dati non va a buon fine.
- Per Seleziona un argomento Pub/Sub, scegli l'argomento o fai clic su Crea un argomento per crearne uno. Questa opzione configura l'esecuzione delle notifiche in Pub/Sub per il trasferimento dei 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
--project_id
non viene specificato per specificare un particolare progetto, viene utilizzato il progetto predefinito. - data_source: campo obbligatorio. Origine dati:
amazon_s3
. - display_name: campo obbligatorio. Il nome visualizzato del trasferimento di dati configurazione. Il nome del trasferimento può essere qualsiasi valore che ti consenta identificare il trasferimento se devi modificarlo in un secondo momento.
- dataset: campo obbligatorio. Il set di dati di destinazione per la configurazione del trasferimento di dati.
- service_account: il nome dell'account di servizio utilizzato per
autenticare il trasferimento dei dati. L'account di servizio deve
essere di proprietà dello stesso
project_id
usato per creare il trasferimento di dati; devono disporre di tutte le autorizzazioni richieste. parameters: campo obbligatorio. I parametri per il trasferimento creato configurazione in formato JSON. Ad esempio:
--params='{"param":"param_value"}'
. Di seguito sono riportati i parametri un trasferimento Amazon S3:- destination_table_name_template: campo obbligatorio. Il nome del tuo tabella di destinazione.
data_path: campo obbligatorio. L'URI Amazon S3, nel seguente formato:
s3://mybucket/myfolder/...
Gli URI supportano anche parametri.
access_key_id: campo obbligatorio. L'ID della tua chiave di accesso.
secret_access_key: campo obbligatorio. La tua chiave di accesso segreta.
file_format: facoltativo. Indica il tipo di file che vuoi da trasferire:
CSV
,JSON
,AVRO
,PARQUET
oORC
. Il valore predefinito èCSV
.write_disposition: facoltativo.
WRITE_APPEND
eseguirà il trasferimento solo i file che sono stati modificati dopo la precedente esecuzione riuscita.WRITE_TRUNCATE
trasferirà tutti i file corrispondenti, inclusi quelli trasferiti durante un'esecuzione precedente. Il valore predefinito èWRITE_APPEND
.max_bad_records: facoltativo. Il numero di errori consentiti record. Il valore predefinito è
0
.decimal_target_types: facoltativo. Un elenco separato da virgole di possibili tipi di dati SQL, come i valori decimali di origine in cui viene convertito. Se questo campo non viene fornito, i valori predefiniti per il tipo di dati a "NUMERIC,STRING" per ORC e "NUMERIC" per gli altri formati file.
ignore_unknown_values: facoltativo e ignorato se file_format non è
JSON
oCSV
. Indica se ignorare valori sconosciuti nei dati.field_delimiter: facoltativo e si applica solo se
file_format
èCSV
. Il carattere che separa i campi. La il valore predefinito è una virgola.skip_leading_rows: facoltativo e si applica solo se file_format è
CSV
. Indica il numero di righe di intestazione che non vuoi importare. Il valore predefinito è0
.allow_quoted_newlines: facoltativo e si applica solo se file_format è
CSV
. Indica se consentire a capo all'interno dei campi tra virgolette.allow_jagged_rows: facoltativo e si applica solo se file_format è
CSV
. Indica se accettare righe a cui mancano colonne facoltative finali. I valori mancanti verranno devono essere compilati con i valori NULL.
Ad esempio, il comando seguente crea un trasferimento dati Amazon S3 denominato
My Transfer
con un valore data_path
pari a
s3://mybucket/myfile/*.csv
, set di dati di destinazione mydataset
e file_format
CSV
, Questo esempio include valori non predefiniti per i parametri facoltativi
associato 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, viene visualizzato 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 nel comando dalla riga di comando.
API
Utilizza la projects.locations.transferConfigs.create
e fornisce un'istanza del metodo TransferConfig
risorsa.
Java
Prima di provare questo esempio, segui le istruzioni per la configurazione di Java nel Guida rapida di BigQuery con librerie client. Per ulteriori informazioni, consulta API Java BigQuery documentazione di riferimento.
Per eseguire l'autenticazione su BigQuery, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per le librerie client.
Impatto della corrispondenza dei prefissi e delle corrispondenze 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 verrà effettivamente caricato in BigQuery. Ciò potrebbe comportare i costi in eccesso per il trasferimento di dati in uscita da Amazon S3 per i file trasferiti, non caricato in BigQuery.
Considera ad esempio questo percorso dati:
s3://bucket/folder/*/subfolder/*.csv
Insieme 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 prefisso s3://bucket/folder/
in fase di trasferimento a Google Cloud. In questo esempio, sia file1.csv
che
L'importo di file2.csv
verrà trasferito.
Tuttavia, solo i file corrispondenti a s3://bucket/folder/*/subfolder/*.csv
in BigQuery. In questo esempio, solo file1.csv
verrà caricato in BigQuery.
Risolvere i problemi di configurazione del trasferimento
In caso di problemi durante la configurazione del trasferimento di dati, consulta l'articolo Problemi di trasferimento con Amazon S3.
Passaggi successivi
- Per un'introduzione ai trasferimenti di dati di Amazon S3, vedi 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, inclusa la ricerca di informazioni su un configurazione di trasferimento, elencare le configurazioni di trasferimento e visualizzare cronologia esecuzioni del trasferimento, vedi Utilizzo dei trasferimenti.
- Scopri come caricare i dati con operazioni cross-cloud.