Die Vorlage „BigQuery für Clickhouse“ ist eine Batchpipeline, die Daten aus einer BigQuery-Tabelle in eine vorhandene Clickhouse-Tabelle kopiert. Die Vorlage kann entweder die gesamte Tabelle oder bestimmte Datensätze mithilfe einer angegebenen Abfrage lesen.
Pipelineanforderungen
- Die BigQuery-Quelltabelle
- Die Clickhouse-Tabelle muss vorhanden sein.
Vorlagenparameter
Erforderliche Parameter
- jdbcUrl: Die Ziel-JDBC-URL für ClickHouse im Format
jdbc:clickhouse://host:port/schema
. Jede JDBC-Option kann am Ende der JDBC-URL hinzugefügt werden. Beispiel:jdbc:clickhouse://localhost:8123/default
- clickHouseUsername: Der ClickHouse-Nutzername, mit dem Sie sich authentifizieren möchten.
- clickHouseTable: Der Name der ClickHouse-Zieltabelle, in die die Daten eingefügt werden sollen.
Optionale Parameter
- inputTableSpec: Die BigQuery-Tabelle, aus der gelesen werden soll. Wenn Sie
inputTableSpec
angeben, liest die Vorlage die Daten mithilfe der BigQuery Storage Read API direkt aus dem BigQuery-Speicher (https://cloud.google.com/bigquery/docs/reference/storage). Informationen zu Einschränkungen in der Storage Read API finden Sie unter https://cloud.google.com/bigquery/docs/reference/storage#limitations. Sie müssen entwederinputTableSpec
oderquery
angeben. Wenn Sie beide Parameter festlegen, verwendet die Vorlage den Parameterquery
. Beispiel:<BIGQUERY_PROJECT>:<DATASET_NAME>.<INPUT_TABLE>
. - outputDeadletterTable: Die BigQuery-Tabelle für Nachrichten, die die Ausgabetabelle nicht erreicht haben. Wenn eine Tabelle nicht vorhanden ist, wird sie während der Pipelineausführung erstellt. Falls nichts angegeben wird, wird
<outputTableSpec>_error_records
verwendet. Beispiel:<PROJECT_ID>:<DATASET_NAME>.<DEADLETTER_TABLE>
- query: Die SQL-Abfrage zum Lesen von Daten aus BigQuery. Wenn sich das BigQuery-Dataset in einem anderen Projekt als der Dataflow-Job befindet, geben Sie den vollständigen Dataset-Namen in der SQL-Abfrage an, z. B. <PROJECT_ID>.<DATASET_NAME>.<TABLE_NAME>. Standardmäßig wird für den Parameter
query
GoogleSQL (https://cloud.google.com/bigquery/docs/introduction-sql) verwendet, sofernuseLegacySql
nichttrue
ist. Sie müssen entwederinputTableSpec
oderquery
angeben. Wenn Sie beide Parameter festlegen, verwendet die Vorlage den Parameterquery
. Beispiel:select * from sampledb.sample_table
. - useLegacySql: Legen Sie
true
fest, um Legacy-SQL zu verwenden. Dieser Parameter gilt nur, wenn der Parameterquery
verwendet wird. Die Standardeinstellung istfalse
. - queryLocation: Erforderlich, wenn Daten aus einer autorisierten Ansicht ohne die Berechtigung der zugrunde liegenden Tabelle gelesen werden. Beispiel:
US
. - queryTempDataset: Mit dieser Option können Sie ein vorhandenes Dataset festlegen, in dem die temporäre Tabelle zum Speichern der Abfrageergebnisse erstellt werden soll. Beispiel:
temp_dataset
. - KMSEncryptionKey: Wenn Daten aus BigQuery mit einer Abfragequelle gelesen werden, wird dieser Cloud KMS-Schlüssel zum Verschlüsseln aller erstellten temporären Tabellen verwendet. Beispiel:
projects/your-project/locations/global/keyRings/your-keyring/cryptoKeys/your-key
. - clickHousePassword: Das ClickHouse-Passwort, mit dem Sie sich authentifizieren.
- maxInsertBlockSize: Die maximale Blockgröße für das Einfügen, wenn wir die Erstellung von Blöcken für das Einfügen steuern (ClickHouseIO-Option).
- insertDistributedSync: Wenn die Einstellung aktiviert ist, wird die Einfügeabfrage in verteilten Wartevorgängen ausgeführt, bis die Daten an alle Knoten im Cluster gesendet werden. (ClickHouseIO-Option).
- insertQuorum: Bei INSERT-Abfragen in der replizierten Tabelle wird mit dem Schreiben gewartet, bis die angegebene Anzahl von Replikaten erreicht ist, und das Hinzufügen der Daten wird linearisiert. 0 – deaktiviert. Diese Einstellung ist in den Standardservereinstellungen (ClickHouseIO-Option) deaktiviert.
- insertDeduplicate: Gibt für INSERT-Abfragen in der replizierten Tabelle an, dass die Deduplizierung von Einfügeblöcken durchgeführt werden soll.
- maxRetries: Maximale Anzahl der Wiederholungsversuche pro Einfügung.
Führen Sie die Vorlage aus.
Console
- Rufen Sie die Dataflow-Seite Job aus Vorlage erstellen auf. Zur Seite "Job aus Vorlage erstellen“
- Geben Sie im Feld Jobname einen eindeutigen Jobnamen ein.
- Optional: Wählen Sie für Regionaler Endpunkt einen Wert aus dem Drop-down-Menü aus. Die Standardregion ist
us-central1
.Eine Liste der Regionen, in denen Sie einen Dataflow-Job ausführen können, finden Sie unter Dataflow-Standorte.
- Wählen Sie im Drop-down-Menü Dataflow-Vorlage die Option the BigQuery to Clickhouse templateaus.
- Geben Sie Ihre Parameterwerte in die Parameterfelder ein.
- Klicken Sie auf Job ausführen.
gcloud
Führen Sie die Vorlage in der Shell oder im Terminal aus:
gcloud dataflow flex-template run JOB_NAME \ --project=PROJECT_ID \ --region=REGION_NAME \ --template-file-gcs-location=gs://dataflow-templates-REGION_NAME/VERSION/flex/BigQuery_to_Clickhouse \ --parameters \ jdbcUrl=JDBC_URL,\ clickHouseUsername=CLICKHOUSE_USERNAME,\ clickHouseTable=CLICKHOUSE_TABLE
Ersetzen Sie Folgendes:
PROJECT_ID
: die Google Cloud Projekt-ID, in der Sie den Dataflow-Job ausführen möchtenJOB_NAME
: ein eindeutiger Jobname Ihrer WahlREGION_NAME
: die Region, in der Sie Ihren Dataflow-Job bereitstellen möchten, z. B.us-central1
VERSION
: Die Version der Vorlage, die Sie verwenden möchtenSie können die folgenden Werte verwenden:
latest
zur Verwendung der neuesten Version der Vorlage, die im nicht datierten übergeordneten Ordner im Bucket verfügbar ist: gs://dataflow-templates-REGION_NAME/latest/- Den Versionsnamen wie
2023-09-12-00_RC00
, um eine bestimmte Version der Vorlage zu verwenden. Diese ist verschachtelt im jeweiligen datierten übergeordneten Ordner im Bucket enthalten: gs://dataflow-templates-REGION_NAME/.
JDBC_URL
: Ihre JDBC-URL.CLICKHOUSE_USERNAME
: Ihr Clickhouse-Nutzername.CLICKHOUSE_TABLE
: Ihre Clickhouse-Tabelle.
API
Senden Sie eine HTTP-POST-Anfrage, um die Vorlage mithilfe der REST API auszuführen. Weitere Informationen zur API und ihren Autorisierungsbereichen finden Sie unter projects.templates.launch
.
POST https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/LOCATION/flexTemplates:launch { "launch_parameter": { "jobName": "JOB_NAME", "parameters": { "jdbcUrl": "JDBC_URL", "clickHouseUsername": "CLICKHOUSE_USERNAME", "clickHouseTable": "CLICKHOUSE_TABLE" }, "containerSpecGcsPath": "gs://dataflow-templates-LOCATION/VERSION/flex/BigQuery_to_Clickhouse", } }
Ersetzen Sie Folgendes:
PROJECT_ID
: die Google Cloud Projekt-ID, in der Sie den Dataflow-Job ausführen möchtenJOB_NAME
: ein eindeutiger Jobname Ihrer WahlLOCATION
: die Region, in der Sie Ihren Dataflow-Job bereitstellen möchten, z. B.us-central1
VERSION
: Die Version der Vorlage, die Sie verwenden möchtenSie können die folgenden Werte verwenden:
latest
zur Verwendung der neuesten Version der Vorlage, die im nicht datierten übergeordneten Ordner im Bucket verfügbar ist: gs://dataflow-templates-REGION_NAME/latest/- Den Versionsnamen wie
2023-09-12-00_RC00
, um eine bestimmte Version der Vorlage zu verwenden. Diese ist verschachtelt im jeweiligen datierten übergeordneten Ordner im Bucket enthalten: gs://dataflow-templates-REGION_NAME/.
JDBC_URL
: Ihre JDBC-URL.CLICKHOUSE_USERNAME
: Ihr Clickhouse-Nutzername.CLICKHOUSE_TABLE
: Ihre Clickhouse-Tabelle.
Nächste Schritte
- Dataflow-Vorlagen
- Sehen Sie sich die Liste der von Google bereitgestellten Vorlagen an.