Die Vorlage „Pub/Sub für Java Database Connectivity (JDBC)“ ist eine Streamingpipeline, die Daten aus einem bereits vorhandenen Pub/Sub-Abo als JSON-Strings aufnimmt und die resultierenden Datensätze in JDBC schreibt.
Pipelineanforderungen
- Das Pub/Sub-Abo muss vorhanden sein, bevor die Pipeline ausgeführt wird.
- Die JDBC-Quelle muss vorhanden sein, bevor die Pipeline ausgeführt wird.
- Das Thema für unzustellbare Nachrichten muss vor dem Ausführen der Pipeline in der Pub/Sub-Ausgabe vorhanden sein.
Vorlagenparameter
Parameter | Beschreibung |
---|---|
driverClassName |
Der Name der JDBC-Treiberklasse. z. B. com.mysql.jdbc.Driver . |
connectionUrl |
Der URL-String für die JDBC-Verbindung. Beispiel: jdbc:mysql://some-host:3306/sampledb .
Sie können diesen Wert als String übergeben, der mit einem Cloud KMS-Schlüssel und dann Base64-verschlüsselt ist.
Entfernen Sie Leerzeichen aus dem Base64-codierten String. |
driverJars |
Durch Kommas getrennte Cloud Storage-Pfade für JDBC-Treiber. Beispiel: gs://your-bucket/driver_jar1.jar,gs://your-bucket/driver_jar2.jar . |
username |
Optional: Der Nutzername, der für die JDBC-Verbindung verwendet werden soll. Sie können diesen Wert mit einem Cloud KMS-Schlüssel als Base64-codierten String übergeben. |
password |
Optional: Das Passwort für die JDBC-Verbindung. Sie können diesen Wert mit einem Cloud KMS-Schlüssel als Base64-codierten String übergeben. |
connectionProperties |
Optional: Attributstring für die JDBC-Verbindung. Format des Strings muss [propertyName=property;]* sein. Beispiel: unicode=true;characterEncoding=UTF-8 . |
statement |
Für die Datenbank auszuführende Anweisung. Die Anweisung muss die Spaltennamen der Tabelle in beliebiger Reihenfolge angeben. Nur die Werte der angegebenen Spaltennamen werden aus der JSON-Datei gelesen und zur Anweisung hinzugefügt. Beispiel: INSERT INTO tableName (column1, column2) VALUES (?,?) |
inputSubscription |
Das Pub/Sub-Eingabeabo, aus dem gelesen werden soll, im Format projects/<project>/subscriptions/<subscription> . |
outputDeadletterTopic |
Das Pub/Sub-Thema als Weiterleitungsziel für nicht zustellbare Nachrichten. Beispiel: projects/<project-id>/topics/<topic-name> . |
KMSEncryptionKey |
Optional: Cloud KMS-Verschlüsselungsschlüssel zur Entschlüsselung des Nutzernamens, Passworts und Verbindungsstrings. Wenn der Cloud KMS-Schlüssel übergeben wird, müssen der Nutzername, das Passwort und der Verbindungsstring verschlüsselt übergeben werden. |
extraFilesToStage |
Durch Kommas getrennte Cloud Storage-Pfade oder Secret Manager-Secrets für Dateien, die im Worker bereitgestellt werden sollen. Diese Dateien werden im Verzeichnis /extra_files in jedem Worker gespeichert. Beispiel: gs://<my-bucket>/file.txt,projects/<project-id>/secrets/<secret-id>/versions/<version-id> . |
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 Pub/Sub to JDBC 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 \ --template-file-gcs-location gs://dataflow-templates-REGION_NAME/VERSION/flex/PubSub_to_Jdbc \ --region REGION_NAME \ --parameters \ driverClassName=DRIVER_CLASS_NAME,\ connectionURL=JDBC_CONNECTION_URL,\ driverJars=DRIVER_PATHS,\ username=CONNECTION_USERNAME,\ password=CONNECTION_PASSWORD,\ connectionProperties=CONNECTION_PROPERTIES,\ statement=SQL_STATEMENT,\ inputSubscription=INPUT_SUBSCRIPTION,\ outputDeadletterTopic=OUTPUT_DEADLETTER_TOPIC,\ KMSEncryptionKey=KMS_ENCRYPTION_KEY
Ersetzen Sie Folgendes:
JOB_NAME
: ein eindeutiger Jobname Ihrer WahlVERSION
: 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/.
REGION_NAME
: die Region, in der Sie Ihren Dataflow-Job bereitstellen möchten, z. B.us-central1
DRIVER_CLASS_NAME
: Der Name der TreiberklasseJDBC_CONNECTION_URL
: Die JDBC-Verbindungs-URLDRIVER_PATHS
: Die kommagetrennten Cloud Storage-Pfade der JDBC-TreiberCONNECTION_USERNAME
: Der Nutzername der JDBC-VerbindungCONNECTION_PASSWORD
: Das JDBC-VerbindungspasswortCONNECTION_PROPERTIES
: JDBC-Verbindungsattribute, falls erforderlichSQL_STATEMENT
: Die SQL-Anweisung, die für die Datenbank ausgeführt werden soll.INPUT_SUBSCRIPTION
: Das Pub/Sub-Eingabeabo, aus dem gelesen werden soll.OUTPUT_DEADLETTER_TOPIC
: Das Pub/Sub als Weiterleitungsziel für nicht zustellbare NachrichtenKMS_ENCRYPTION_KEY
: Der Cloud KMS-Verschlüsselungsschlüssel
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 { "jobName": "JOB_NAME", "parameters": { "driverClassName": "DRIVER_CLASS_NAME", "connectionURL": "JDBC_CONNECTION_URL", "driverJars": "DRIVER_PATHS", "username": "CONNECTION_USERNAME", "password": "CONNECTION_PASSWORD", "connectionProperties": "CONNECTION_PROPERTIES", "statement": "SQL_STATEMENT", "inputSubscription": "INPUT_SUBSCRIPTION", "outputDeadletterTopic": "OUTPUT_DEADLETTER_TOPIC", "KMSEncryptionKey":"KMS_ENCRYPTION_KEY" }, "environment": { "zone": "us-central1-f" }, }
Ersetzen Sie Folgendes:
PROJECT_ID
: die ID des Google Cloud-Projekts, in dem Sie den Dataflow-Job ausführen möchtenJOB_NAME
: ein eindeutiger Jobname Ihrer WahlVERSION
: 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/.
LOCATION
: die Region, in der Sie Ihren Dataflow-Job bereitstellen möchten, z. B.us-central1
DRIVER_CLASS_NAME
: Der Name der TreiberklasseJDBC_CONNECTION_URL
: Die JDBC-Verbindungs-URLDRIVER_PATHS
: Die kommagetrennten Cloud Storage-Pfade der JDBC-TreiberCONNECTION_USERNAME
: Der Nutzername der JDBC-VerbindungCONNECTION_PASSWORD
: Das JDBC-VerbindungspasswortCONNECTION_PROPERTIES
: JDBC-Verbindungsattribute, falls erforderlichSQL_STATEMENT
: Die SQL-Anweisung, die für die Datenbank ausgeführt werden soll.INPUT_SUBSCRIPTION
: Das Pub/Sub-Eingabeabo, aus dem gelesen werden soll.OUTPUT_DEADLETTER_TOPIC
: Das Pub/Sub als Weiterleitungsziel für nicht zustellbare NachrichtenKMS_ENCRYPTION_KEY
: Der Cloud KMS-Verschlüsselungsschlüssel
Nächste Schritte
- Dataflow-Vorlagen
- Sehen Sie sich die Liste der von Google bereitgestellten Vorlagen an.