Anleitungen für die Migration von Snowflake zu BigQuery
Dieses Dokument enthält durchgängige Beispiele und Anleitungen für die verschiedenen Möglichkeiten, eine Migrationspipeline von Snowflake zu BigQuery einzurichten.
Beispiele für Snowflake-Migrationspipelines
Sie können Ihre Daten mit drei verschiedenen Verfahren von Snowflake zu BigQuery migrieren: ELT, ETL oder mit Partnertools.
Extrahieren, Laden und Transformieren
Sie können einen ELT-Prozess (Extrahieren, Laden und Transformieren) mit zwei Methoden einrichten:
- Pipeline zum Extrahieren von Daten aus Snowflake und Laden der Daten in BigQuery verwenden
- Daten aus Snowflake mit anderen Google Cloud Produkten extrahieren
Pipeline zum Extrahieren von Daten aus Snowflake verwenden
Wenn Sie Daten aus Snowflake extrahieren und direkt in Cloud Storage laden möchten, verwenden Sie das Tool snowflake2bq.
Anschließend können Sie Ihre Daten mit einem der folgenden Tools aus Cloud Storage in BigQuery laden:
- BigQuery Data Transfer Service-Connector für Cloud Storage
- Der Befehl
LOADim bq-Befehlszeilentool - BigQuery API-Clientbibliotheken
Andere Tools zum Extrahieren von Daten aus Snowflake
Sie können auch die folgenden Tools verwenden, um Daten aus Snowflake zu extrahieren:
- Dataflow
- Cloud Data Fusion
- Dataproc
- Apache Spark BigQuery-Connector
- Snowflake-Connector für Apache Spark
- Hadoop-BigQuery-Connector
- Der JDBC-Treiber von Snowflake und Sqoop zum Extrahieren von Daten aus Snowflake in Cloud Storage:
Andere Tools zum Laden von Daten in BigQuery
Sie können auch die folgenden Tools verwenden, um Daten in BigQuery zu laden:
- Dataflow
- Cloud Data Fusion
- Dataproc
- Dataprep by Trifacta
Extrahieren, Transformieren und Laden
Wenn Sie Ihre Daten transformieren möchten, bevor Sie sie in BigQuery laden, können Sie die folgenden Tools verwenden:
- Dataflow
- Klonen Sie den Code der JDBC-zu-BigQuery-Vorlage und ändern Sie die Vorlage, um Apache Beam-Transformationen hinzuzufügen.
- Cloud Data Fusion
- Erstellen Sie eine wiederverwendbare Pipeline und transformieren Sie Ihre Daten mit CDAP-Plug-ins.
- Dataproc
- Transformieren Sie Ihre Daten mit Spark SQL oder benutzerdefiniertem Code in einer der unterstützten Spark-Sprachen wie Scala, Java, Python oder R.
Partnertools für die Migration
Es gibt mehrere Anbieter, die sich auf den EDW-Migrationsraum spezialisiert haben. Eine Liste der wichtigsten Partner und ihrer Lösungen finden Sie unter BigQuery-Partner.
Anleitung zum Exportieren von Snowflake-Daten
Im folgenden Tutorial wird ein Beispiel für den Export von Daten von Snowflake nach BigQuery gezeigt, bei dem der Befehl COPY INTO <location> von Snowflake verwendet wird.
Eine detaillierte Schritt-für-Schritt-Anleitung, die Codebeispiele enthält, finden Sie im Artikel zum Google Cloud Tool „Snowflake to BigQuery“ der Google Cloud-Dienstleistungen.
Auf Export vorbereiten
Sie können Ihre Snowflake-Daten für einen Export vorbereiten, indem Sie sie mit den folgenden Schritten in einen Cloud Storage- oder Amazon Simple Storage Service-Bucket (Amazon S3) extrahieren:
Cloud Storage
In dieser Anleitung wird die Datei im Format PARQUET vorbereitet.
Verwenden Sie Snowflake-SQL-Anweisungen, um eine benannte Dateiformatspezifikation zu erstellen.
create or replace file format NAMED_FILE_FORMAT type = 'PARQUET'
Ersetzen Sie
NAMED_FILE_FORMATdurch einen Namen für das Dateiformat. Beispiel:my_parquet_unload_format.Erstellen Sie eine Integration mit dem Befehl
CREATE STORAGE INTEGRATION.create storage integration INTEGRATION_NAME type = external_stage storage_provider = gcs enabled = true storage_allowed_locations = ('BUCKET_NAME')
Ersetzen Sie Folgendes:
INTEGRATION_NAME: ein Name für die Speicherintegration. Beispiel:gcs_int.BUCKET_NAME: der Pfad zum Cloud Storage-Bucket. Beispiel:gcs://mybucket/extract/.
Rufen Sie das Cloud Storage-Dienstkonto für Snowflake mit dem Befehl
DESCRIBE INTEGRATIONab.desc storage integration INTEGRATION_NAME;
Die Ausgabe sieht etwa so aus:
+-----------------------------+---------------+-----------------------------------------------------------------------------+------------------+ | 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 | | +-----------------------------+---------------+-----------------------------------------------------------------------------+------------------+
Gewähren Sie dem als
STORAGE_GCP_SERVICE_ACCOUNTaufgeführten Dienstkonto Lese- und Schreibzugriff auf den im Befehl zur Speicherintegration angegebenen Bucket. In diesem Beispiel gewähren Sie dem Dienstkontoservice-account-id@Lese- und Schreibzugriff auf den Bucket<var>UNLOAD_BUCKET</var>.Erstellen Sie eine externe Cloud Storage-Phase, die auf die zuvor erstellte Integration verweist.
create or replace stage STAGE_NAME url='UNLOAD_BUCKET' storage_integration = INTEGRATION_NAME file_format = NAMED_FILE_FORMAT;
Ersetzen Sie Folgendes:
STAGE_NAME: Ein Name für das Cloud Storage-Staging-Objekt. Beispiel:my_ext_unload_stage.
Amazon S3
Das folgende Beispiel zeigt, wie Sie Daten aus einer Snowflake-Tabelle in einen Amazon S3-Bucket verschieben:
Konfigurieren Sie in Snowflake ein Speicherintegrationsobjekt, damit Snowflake in einen Amazon S3-Bucket schreiben kann, auf den in einer externen Cloud Storage-Phase verwiesen wird.
Dieser Schritt umfasst die Konfiguration von Zugriffsberechtigungen für den Amazon S3-Bucket, das Erstellen der AWS-IAM-Rolle und das Erstellen einer Speicherintegration in Snowflake mit dem Befehl
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')
Ersetzen Sie Folgendes:
INTEGRATION_NAME: ein Name für die Speicherintegration. Beispiel:s3_int.BUCKET_NAME: der Pfad zum Amazon S3-Bucket, in den Dateien geladen werden sollen. Beispiel:s3://unload/files/.
Rufen Sie den AWS IAM-Nutzer mit dem Befehl
DESCRIBE INTEGRATIONab.desc integration INTEGRATION_NAME;
Die Ausgabe sieht etwa so aus:
+---------------------------+---------------+================================================================================+------------------+ | 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=
| | +---------------------------+---------------+================================================================================+------------------+ Erstellen Sie eine Rolle mit der Berechtigung
CREATE STAGEfür das Schema und der BerechtigungUSAGEfür die Speicherintegration:CREATE role ROLE_NAME; GRANT CREATE STAGE ON SCHEMA public TO ROLE ROLE_NAME; GRANT USAGE ON INTEGRATION s3_int TO ROLE ROLE_NAME;
Ersetzen Sie
ROLE_NAMEdurch einen Namen für die Rolle. Beispiel:myrole.Gewähren Sie dem AWS IAM-Nutzer Berechtigungen zum Zugriff auf den Amazon S3-Bucket und erstellen Sie eine externe Phase mit dem Befehl
CREATE STAGE:USE SCHEMA mydb.public; create or replace stage STAGE_NAME url='BUCKET_NAME' storage_integration = INTEGRATION_NAMEt file_format = NAMED_FILE_FORMAT;
Ersetzen Sie Folgendes:
STAGE_NAME: Ein Name für das Cloud Storage-Staging-Objekt. Beispiel:my_ext_unload_stage.
Snowflake-Daten exportieren
Nachdem Sie Ihre Daten vorbereitet haben, können Sie sie zu Google Cloudverschieben.
Verwenden Sie den Befehl COPY INTO, um Daten aus der Snowflake-Datenbanktabelle in einen Cloud Storage- oder Amazon S3-Bucket zu kopieren. Geben Sie dazu das Objekt der externen Phase STAGE_NAME an.
copy into @STAGE_NAME/d1 from TABLE_NAME;
Ersetzen Sie TABLE_NAME durch den Namen Ihrer Snowflake-Datenbanktabelle.
Als Ergebnis dieses Befehls werden die Tabellendaten in das Staging-Objekt kopiert, das mit dem Cloud Storage- oder Amazon S3-Bucket verknüpft ist. Die Datei enthält das Präfix d1.
Andere Exportmethoden
Wenn Sie Azure Blob Storage für Ihre Datenexporte verwenden möchten, folgen Sie der Anleitung unter In Microsoft Azure entladen. Übertragen Sie dann die exportierten Dateien mit Storage Transfer Service nach Cloud Storage.