「Pub/Sub 到 Java Database Connectivity (JDBC)」範本是一個串流管道,可從現有的 Pub/Sub 訂閱項目擷取 JSON 字串形式的資料,並將產生的記錄寫入 JDBC。
管道相關規定
- 執行管道之前,Pub/Sub 訂閱項目必須已經存在。
- 執行管道之前,JDBC 來源必須已經存在。
- 執行管道之前,Pub/Sub 無法發送的輸出主題必須已經存在。
範本參數
參數 | 說明 |
---|---|
driverClassName |
JDBC 驅動程式類別名稱,例如 com.mysql.jdbc.Driver 。 |
connectionUrl |
JDBC 連線網址字串,例如:jdbc:mysql://some-host:3306/sampledb 。您可以傳入這個值,方法是使用 Cloud KMS 金鑰加密,然後進行 Base64 編碼。
從 Base64 編碼字串中移除空格字元。 |
driverJars |
以逗號分隔的 JDBC 驅動程式 Cloud Storage 路徑。例如,gs://your-bucket/driver_jar1.jar,gs://your-bucket/driver_jar2.jar 。 |
username |
選用:JDBC 連線要使用的使用者名稱。您可以傳入這個值,並使用 Cloud KMS 金鑰將其加密為 Base64 編碼的字串。 |
password |
選用:JDBC 連線使用的密碼。您可以傳入這個值,並使用 Cloud KMS 金鑰將其加密為 Base64 編碼的字串。 |
connectionProperties |
選用:JDBC 連線的屬性字串,字串格式必須為 [propertyName=property;]* 。例如:unicode=true;characterEncoding=UTF-8 。 |
statement |
要對資料庫執行的陳述式。陳述式必須指定資料表的資料欄名稱,順序不限。系統只會從 JSON 讀取指定資料欄名稱的值,並加入陳述式。例如 INSERT INTO tableName (column1, column2) VALUES (?,?) 。 |
inputSubscription |
要讀取的 Pub/Sub 輸入訂閱,格式為 projects/<project>/subscriptions/<subscription> 。 |
outputDeadletterTopic |
要轉送無法傳送訊息的 Pub/Sub 主題。例如 projects/<project-id>/topics/<topic-name> 。 |
KMSEncryptionKey |
選用:可解密使用者名稱、密碼和連線字串的 Cloud KMS 加密金鑰。如果傳入 Cloud KMS 金鑰,則必須以加密方式傳送使用者名稱、密碼和連線字串。 |
extraFilesToStage |
以半形逗號分隔的 Cloud Storage 路徑或 Secret Manager 密鑰,用於在工作站中暫存檔案。這些檔案會儲存在每個工作站的 /extra_files 目錄下。例如:gs://<my-bucket>/file.txt,projects/<project-id>/secrets/<secret-id>/versions/<version-id> 。 |
執行範本
控制台
- 前往 Dataflow 的「Create job from template」(透過範本建立工作) 頁面。 前往「依據範本建立工作」
- 在「工作名稱」欄位中,輸入專屬工作名稱。
- 選用:如要使用區域端點,請從下拉式選單中選取值。預設區域為
us-central1
。如需可執行 Dataflow 工作的地區清單,請參閱「Dataflow 位置」。
- 從「Dataflow template」(Dataflow 範本) 下拉式選單中選取 the Pub/Sub to JDBC template。
- 在提供的參數欄位中輸入參數值。
- 按一下「Run Job」(執行工作)。
gcloud
在殼層或終端機中執行範本:
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
更改下列內容:
JOB_NAME
: 您選擇的不重複工作名稱VERSION
: 您要使用的範本版本您可以使用下列值:
latest
,使用範本的最新版本,該版本位於值區中非依日期命名的上層資料夾:gs://dataflow-templates-REGION_NAME/latest/- 版本名稱 (例如
2023-09-12-00_RC00
),用於指定範本版本,該版本會以巢狀結構存放在值區中依日期命名的上層資料夾中:gs://dataflow-templates-REGION_NAME/
REGION_NAME
: 您要部署 Dataflow 工作的地區,例如us-central1
DRIVER_CLASS_NAME
:驅動程式類別名稱JDBC_CONNECTION_URL
:JDBC 連線網址DRIVER_PATHS
:JDBC 驅動程式的 Cloud Storage 路徑 (以逗號分隔)CONNECTION_USERNAME
:JDBC 連線使用者名稱CONNECTION_PASSWORD
:JDBC 連線密碼CONNECTION_PROPERTIES
:JDBC 連線屬性 (如有必要)SQL_STATEMENT
:要對資料庫執行的 SQL 陳述式INPUT_SUBSCRIPTION
:要讀取的 Pub/Sub 輸入訂閱OUTPUT_DEADLETTER_TOPIC
:Pub/Sub,用於轉送無法傳送的訊息KMS_ENCRYPTION_KEY
:Cloud KMS 加密金鑰
API
如要使用 REST API 執行範本,請傳送 HTTP POST 要求。如要進一步瞭解 API 和授權範圍,請參閱 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" }, }
更改下列內容:
PROJECT_ID
: 您要執行 Dataflow 工作的專案 ID Google CloudJOB_NAME
: 您選擇的不重複工作名稱VERSION
: 您要使用的範本版本您可以使用下列值:
latest
,使用範本的最新版本,該版本位於值區中非依日期命名的上層資料夾:gs://dataflow-templates-REGION_NAME/latest/- 版本名稱 (例如
2023-09-12-00_RC00
),用於指定範本版本,該版本會以巢狀結構存放在值區中依日期命名的上層資料夾中:gs://dataflow-templates-REGION_NAME/
LOCATION
: 您要部署 Dataflow 工作的地區,例如us-central1
DRIVER_CLASS_NAME
:驅動程式類別名稱JDBC_CONNECTION_URL
:JDBC 連線網址DRIVER_PATHS
:JDBC 驅動程式的 Cloud Storage 路徑 (以逗號分隔)CONNECTION_USERNAME
:JDBC 連線使用者名稱CONNECTION_PASSWORD
:JDBC 連線密碼CONNECTION_PROPERTIES
:JDBC 連線屬性 (如有必要)SQL_STATEMENT
:要對資料庫執行的 SQL 陳述式INPUT_SUBSCRIPTION
:要讀取的 Pub/Sub 輸入訂閱OUTPUT_DEADLETTER_TOPIC
:Pub/Sub,用於轉送無法傳送的訊息KMS_ENCRYPTION_KEY
:Cloud KMS 加密金鑰
後續步驟
- 瞭解 Dataflow 範本。
- 請參閱 Google 提供的範本清單。