Tutorial sulla migrazione da Snowflake a BigQuery
Questo documento fornisce esempi e tutorial end-to-end per i diversi modi in cui puoi configurare una pipeline di migrazione da Snowflake a BigQuery.
Esempi di pipeline di migrazione Snowflake
Puoi eseguire la migrazione dei dati da Snowflake a BigQuery utilizzando tre processi diversi: ELT, ETL o utilizzando strumenti partner.
Estrai, carica e trasforma
Puoi configurare un processo di estrazione, caricamento e trasformazione (ELT) con due metodi:
- Utilizza una pipeline per estrarre i dati da Snowflake e caricarli in BigQuery
- Estrai i dati da Snowflake utilizzando altri Google Cloud prodotti.
Utilizzare una pipeline per estrarre dati da Snowflake
Per estrarre i dati da Snowflake e caricarli direttamente in Cloud Storage, utilizza lo strumento snowflake2bq.
Puoi quindi caricare i dati da Cloud Storage a BigQuery utilizzando uno dei seguenti strumenti:
- Il connettore BigQuery Data Transfer Service per Cloud Storage
- Il comando
LOADutilizzando lo strumento a riga di comando bq - Librerie client API BigQuery
Altri strumenti per estrarre dati da Snowflake
Puoi anche utilizzare i seguenti strumenti per estrarre i dati da Snowflake:
- Dataflow
- Cloud Data Fusion
- Dataproc
- Connettore BigQuery Apache Spark
- Connettore Snowflake per Apache Spark
- Connettore Hadoop BigQuery
- Il driver JDBC di Snowflake e Sqoop per estrarre i dati da Snowflake in Cloud Storage:
Altri strumenti per caricare dati in BigQuery
Puoi anche utilizzare i seguenti strumenti per caricare i dati in BigQuery:
- Dataflow
- Cloud Data Fusion
- Dataproc
- Dataprep di Trifacta
Estrazione, trasformazione e caricamento
Se vuoi trasformare i dati prima di caricarli in BigQuery, valuta i seguenti strumenti:
- Dataflow
- Clona il codice del modello JDBC a BigQuery e modificalo per aggiungere trasformazioni Apache Beam.
- Cloud Data Fusion
- Crea una pipeline riutilizzabile e trasforma i dati utilizzando i plug-in CDAP.
- Dataproc
- Trasforma i dati utilizzando Spark SQL o codice personalizzato in uno dei linguaggi Spark supportati, come Scala, Java, Python o R.
Strumenti dei partner per la migrazione
Esistono diversi fornitori specializzati nella migrazione EDW. Per un elenco dei partner principali e delle soluzioni fornite, consulta Partner BigQuery.
Tutorial sull'esportazione di Snowflake
Il seguente tutorial mostra un'esportazione di dati di esempio da Snowflake a BigQuery che utilizza il comando COPY INTO <location> di Snowflake.
Per una procedura dettagliata passo passo che include esempi di codice, consulta
lo strumento di servizi professionali per la migrazione da Snowflake a BigQueryGoogle Cloud
Prepararsi per l'esportazione
Puoi preparare i dati Snowflake per l'esportazione estraendoli in un bucket Cloud Storage o Amazon Simple Storage Service (Amazon S3) seguendo questi passaggi:
Cloud Storage
Questo tutorial prepara il file in formato PARQUET.
Utilizza le istruzioni SQL di Snowflake per creare una specifica del formato di file denominato.
create or replace file format NAMED_FILE_FORMAT type = 'PARQUET'
Sostituisci
NAMED_FILE_FORMATcon un nome per il formato del file. Ad esempio,my_parquet_unload_format.Crea un'integrazione con il comando
CREATE STORAGE INTEGRATION.create storage integration INTEGRATION_NAME type = external_stage storage_provider = gcs enabled = true storage_allowed_locations = ('BUCKET_NAME')
Sostituisci quanto segue:
INTEGRATION_NAME: un nome per l'integrazione dell'archiviazione. Ad esempio,gcs_intBUCKET_NAME: il percorso del bucket Cloud Storage. Ad esempio,gcs://mybucket/extract/
Recupera il account di servizio Cloud Storage per Snowflake con il comando
DESCRIBE INTEGRATION.desc storage integration INTEGRATION_NAME;
L'output è simile al seguente:
+-----------------------------+---------------+-----------------------------------------------------------------------------+------------------+ | property | property_type | property_value | property_default | +-----------------------------+---------------+-----------------------------------------------------------------------------+------------------| | ENABLED | Boolean | true | false | | STORAGE_ALLOWED_LOCATIONS | List | gcs://mybucket1/path1/,gcs://mybucket2/path2/ | [] | | STORAGE_BLOCKED_LOCATIONS | List | gcs://mybucket1/path1/sensitivedata/,gcs://mybucket2/path2/sensitivedata/ | [] | | STORAGE_GCP_SERVICE_ACCOUNT | String | service-account-id@iam.gserviceaccount.com | | +-----------------------------+---------------+-----------------------------------------------------------------------------+------------------+
Concedi all'account di servizio elencato come
STORAGE_GCP_SERVICE_ACCOUNTl'accesso in lettura e scrittura al bucket specificato nel comando di integrazione dell'archiviazione. In questo esempio, concedi all'account di servizioservice-account-id@l'accesso in lettura e scrittura al bucket<var>UNLOAD_BUCKET</var>.Crea uno stage Cloud Storage esterno che faccia riferimento all'integrazione che hai creato in precedenza.
create or replace stage STAGE_NAME url='UNLOAD_BUCKET' storage_integration = INTEGRATION_NAME file_format = NAMED_FILE_FORMAT;
Sostituisci quanto segue:
STAGE_NAME: un nome per l'oggetto di staging Cloud Storage. Ad esempio,my_ext_unload_stage
Amazon S3
L'esempio seguente mostra come spostare i dati da una tabella Snowflake a un bucket Amazon S3:
In Snowflake, configura un oggetto di integrazione dell'archiviazione per consentire a Snowflake di scrivere in un bucket Amazon S3 a cui viene fatto riferimento in una fase esterna di Cloud Storage.
Questo passaggio prevede la configurazione delle autorizzazioni di accesso al bucket Amazon S3, la creazione del ruolo AWS IAM e la creazione di un'integrazione di archiviazione in Snowflake con il comando
CREATE STORAGE INTEGRATION:create storage integration INTEGRATION_NAME type = external_stage storage_provider = s3 enabled = true storage_aws_role_arn = 'arn:aws:iam::001234567890:role/myrole' storage_allowed_locations = ('BUCKET_NAME')
Sostituisci quanto segue:
INTEGRATION_NAME: un nome per l'integrazione dell'archiviazione. Ad esempio,s3_intBUCKET_NAME: il percorso del bucket Amazon S3 in cui caricare i file. Ad esempio,s3://unload/files/
Recupera l'utente IAM AWS con il comando
DESCRIBE INTEGRATION.desc integration INTEGRATION_NAME;
L'output è simile al seguente:
+---------------------------+---------------+================================================================================+------------------+ | property | property_type | property_value | property_default | +---------------------------+---------------+================================================================================+------------------| | ENABLED | Boolean | true | false | | STORAGE_ALLOWED_LOCATIONS | List | s3://mybucket1/mypath1/,s3://mybucket2/mypath2/ | [] | | STORAGE_BLOCKED_LOCATIONS | List | s3://mybucket1/mypath1/sensitivedata/,s3://mybucket2/mypath2/sensitivedata/ | [] | | STORAGE_AWS_IAM_USER_ARN | String | arn:aws:iam::123456789001:user/abc1-b-self1234 | | | STORAGE_AWS_ROLE_ARN | String | arn:aws:iam::001234567890:role/myrole | | | STORAGE_AWS_EXTERNAL_ID | String | MYACCOUNT_SFCRole=
| | +---------------------------+---------------+================================================================================+------------------+ Crea un ruolo con il privilegio
CREATE STAGEper lo schema e il privilegioUSAGEper l'integrazione dell'archiviazione:CREATE role ROLE_NAME; GRANT CREATE STAGE ON SCHEMA public TO ROLE ROLE_NAME; GRANT USAGE ON INTEGRATION s3_int TO ROLE ROLE_NAME;
Sostituisci
ROLE_NAMEcon un nome per il ruolo. Ad esempio,myrole.Concedi all'utente IAM AWS le autorizzazioni per accedere al bucket Amazon S3 e crea uno stage esterno con il comando
CREATE STAGE:USE SCHEMA mydb.public; create or replace stage STAGE_NAME url='BUCKET_NAME' storage_integration = INTEGRATION_NAMEt file_format = NAMED_FILE_FORMAT;
Sostituisci quanto segue:
STAGE_NAME: un nome per l'oggetto di staging Cloud Storage. Ad esempio,my_ext_unload_stage
Esportare i dati di Snowflake
Dopo aver preparato i dati, puoi spostarli su Google Cloud.
Utilizza il comando COPY INTO per copiare i dati dalla tabella del database Snowflake in un bucket Cloud Storage o Amazon S3 specificando l'oggetto di staging esterno, STAGE_NAME.
copy into @STAGE_NAME/d1 from TABLE_NAME;
Sostituisci TABLE_NAME con il nome della tabella del database Snowflake.
Come risultato di questo comando, i dati della tabella vengono copiati nell'oggetto stage, che è collegato al bucket Cloud Storage o Amazon S3. Il file include il prefisso d1.
Altri metodi di esportazione
Per utilizzare Azure Blob Storage per le esportazioni di dati, segui i passaggi descritti in Scaricamento in Microsoft Azure. Poi, trasferisci i file esportati in Cloud Storage utilizzando Storage Transfer Service.