Tutorial sulla migrazione da Snowflake a BigQuery
Questo documento fornisce esempi end-to-end e tutorial per le diverse modalità di configurazione di una pipeline di migrazione da Snowflake a BigQuery.
Esempi di pipeline di migrazione di Snowflake
Puoi eseguire la migrazione dei dati da Snowflake a BigQuery utilizzando tre processi diversi: ELT, ETL o utilizzando strumenti partner.
Estrazione, caricamento e trasformazione
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.
Utilizza una pipeline per estrarre i 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 dell'API BigQuery
Altri strumenti per estrarre i dati da Snowflake
Puoi anche utilizzare i seguenti strumenti per estrarre i dati da Snowflake:
- Dataflow
- Cloud Data Fusion
- Managed Service for Apache Spark
- Connettore BigQuery di 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 i dati in BigQuery
Puoi anche utilizzare i seguenti strumenti per caricare i dati in BigQuery:
- Dataflow
- Cloud Data Fusion
- Managed Service for Apache Spark
- Dataprep di Trifacta
Estrazione, trasformazione e caricamento
Se vuoi trasformare i dati prima di caricarli in BigQuery, prendi in considerazione i seguenti strumenti:
- Dataflow
- Clona il codice del modello da 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.
- Managed Service for Apache Spark
- Trasforma i dati utilizzando Spark SQL o codice personalizzato in uno dei linguaggi Spark supportati, come Scala, Java, Python o R.
Strumenti partner per la migrazione
Esistono diversi fornitori specializzati nell'ambito della migrazione EDW. Per un elenco dei partner principali e delle soluzioni fornite, vedi Partner BigQuery.
Tutorial sull'esportazione di Snowflake
Il seguente tutorial mostra un esempio di esportazione di dati da Snowflake a
BigQuery che utilizza il comando COPY INTO <location> di Snowflake.
Per una procedura dettagliata passo passo che include esempi di codice, vedi
lo Google Cloud strumento di servizi professionali da Snowflake a BigQuery
Prepara l'esportazione
Puoi preparare i dati di Snowflake per un'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 file denominato.
create or replace file format NAMED_FILE_FORMAT type = 'PARQUET'
Sostituisci
NAMED_FILE_FORMATcon un nome per il formato file. Ad esempio,my_parquet_unload_format.Crea un'integrazione con il
CREATE STORAGE INTEGRATIONcomando.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
DESCRIBE INTEGRATIONcomando.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 al 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 al 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 creata 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 stage 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 fa riferimento uno stage Cloud Storage esterno.
Questo passaggio prevede la configurazione delle autorizzazioni di accesso al bucket Amazon S3, la creazione del ruolo IAM di Amazon Web Services (AWS), e la creazione di un'integrazione dell'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
CREATE STAGEcomando: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 stage Cloud Storage. Ad esempio,my_ext_unload_stage
Esporta i dati di Snowflake
Dopo aver preparato i dati, puoi spostarli in 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 stage 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, 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. Trasferisci quindi i file esportati in Cloud Storage utilizzando Storage Transfer Service.