「Pub/Sub 到 Cloud Storage 中的 Avro 檔案」範本是一個串流管道,可從 Pub/Sub 主題讀取訊息並寫入指定 Cloud Storage 值區。
管道相關規定
- 在執行管道前,輸入 Pub/Sub 主題必須已存在。
範本參數
必要參數
- inputTopic:要訂閱來進行訊息調用的 Pub/Sub 主題。主題名稱的格式必須為
projects/<PROJECT_ID>/topics/<TOPIC_NAME>。 - outputDirectory:要存放 Avro 檔案封存的輸出路徑。結尾必須包含
/。例如:gs://example-bucket/example-directory/。 - avroTempDirectory:Avro 暫存檔目錄。結尾必須包含
/。例如:gs://example-bucket/example-directory/。
選用參數
- outputFilenamePrefix:Avro 檔案的輸出檔案名稱前置字串。預設值為:output。
- outputFilenameSuffix:Avro 檔案的輸出檔案名稱尾碼。預設為空白。
- outputShardTemplate:資料分割範本會定義每個固定時段檔案的動態部分。根據預設,管道使用單一資料分割來輸出到每個時段內的檔案系統。因此,所有資料會按時段輸出至單一檔案。
outputShardTemplate預設為to W-P-SS-of-NN,其中W是時段日期範圍,P是窗格資訊,S是分片編號,而N則是分片數目。如果只有單一檔案,outputShardTemplate的SS-of-NN部分會是00-of-01。 - yearPattern:年份的格式設定模式。必須是
y或Y的一或多個值。大小寫在年份中沒有差別。您可以選擇性地以非英數字元或目錄 (/) 字元包裝模式。預設為YYYY。 - monthPattern:月份的格式模式。必須是一或多個
M字元。您可以選擇性地以非英數字元或目錄 (/) 字元包裝模式。預設為MM。 - dayPattern:格式化日期的模式。必須是當月第幾天的
d,或當年第幾天的D。您可以選擇性地以非英數字元或目錄 (/) 字元包裝模式。預設為dd。 - hourPattern:小時格式的模式。必須是一或多個
H字元。您可以選擇性地以非英數字元或目錄 (/) 字元包裝模式。預設為HH。 - minutePattern:分鐘的格式模式。必須是一或多個
m字元。您可以選擇性地以非英數字元或目錄 (/) 字元包裝模式。預設為mm。
執行範本
控制台
- 前往 Dataflow 的「Create job from template」(依據範本建立工作) 頁面。 前往「依範本建立工作」
- 在「Job name」(工作名稱) 欄位中,輸入專屬工作名稱。
- 選用:如要使用區域端點,請從下拉式選單中選取值。預設區域為
us-central1。如需可執行 Dataflow 工作的區域清單,請參閱「Dataflow 位置」。
- 從「Dataflow template」(Dataflow 範本) 下拉式選單中,選取「Pub/Sub to Avro Files on Cloud Storage」(Pub/Sub 到 Cloud Storage 的 Avro 檔案) 範本。
- 在提供的參數欄位中輸入參數值。
- 按一下「Run Job」(執行工作)。
gcloud
在殼層或終端機中執行範本:
gcloud dataflow jobs run JOB_NAME \ --gcs-location gs://dataflow-templates/VERSION/Cloud_PubSub_to_Avro \ --region REGION_NAME \ --staging-location STAGING_LOCATION \ --parameters \ inputTopic=projects/PROJECT_ID/topics/TOPIC_NAME,\ outputDirectory=gs://BUCKET_NAME/output/,\ outputFilenamePrefix=FILENAME_PREFIX,\ outputFilenameSuffix=FILENAME_SUFFIX,\ outputShardTemplate=SHARD_TEMPLATE,\ avroTempDirectory=gs://BUCKET_NAME/temp/
更改下列內容:
JOB_NAME:您選擇的不重複工作名稱REGION_NAME:您要部署 Dataflow 工作的區域,例如us-central1VERSION:您要使用的範本版本您可以使用下列值:
latest,使用範本的最新版本,該版本位於 bucket 中非依日期命名的上層資料夾:gs://dataflow-templates/latest/- 版本名稱,例如
2023-09-12-00_RC00,可使用特定版本的範本,該範本會以巢狀結構存放在 bucket 中相應的依日期命名上層資料夾中:gs://dataflow-templates/
STAGING_LOCATION:用於暫存本機檔案的位置 (例如gs://your-bucket/staging)TOPIC_NAME:Pub/Sub 主題名稱BUCKET_NAME:Cloud Storage bucket 的名稱FILENAME_PREFIX:偏好的輸出檔案名稱前置字串FILENAME_SUFFIX:偏好的輸出檔案名稱後置字串SHARD_TEMPLATE:偏好的輸出資料分割範本
API
如要使用 REST API 執行範本,請傳送 HTTP POST 要求。如要進一步瞭解 API 和授權範圍,請參閱 projects.templates.launch。
POST https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/LOCATION/templates:launch?gcsPath=gs://dataflow-templates/VERSION/Cloud_PubSub_to_Avro { "jobName": "JOB_NAME", "environment": { "ipConfiguration": "WORKER_IP_UNSPECIFIED", "additionalExperiments": [] }, "parameters": { "inputTopic": "projects/PROJECT_ID/topics/TOPIC_NAME", "outputDirectory": "gs://BUCKET_NAME/output/", "avroTempDirectory": "gs://BUCKET_NAME/temp/", "outputFilenamePrefix": "FILENAME_PREFIX", "outputFilenameSuffix": "FILENAME_SUFFIX", "outputShardTemplate": "SHARD_TEMPLATE" } }
更改下列內容:
PROJECT_ID:您要執行 Dataflow 工作的 Google Cloud 專案 IDJOB_NAME:您選擇的不重複工作名稱LOCATION:您要部署 Dataflow 工作的區域,例如us-central1VERSION:您要使用的範本版本您可以使用下列值:
latest,使用範本的最新版本,該版本位於 bucket 中非依日期命名的上層資料夾:gs://dataflow-templates/latest/- 版本名稱,例如
2023-09-12-00_RC00,可使用特定版本的範本,該範本會以巢狀結構存放在 bucket 中相應的依日期命名上層資料夾中:gs://dataflow-templates/
STAGING_LOCATION:用於暫存本機檔案的位置 (例如gs://your-bucket/staging)TOPIC_NAME:Pub/Sub 主題名稱BUCKET_NAME:Cloud Storage bucket 的名稱FILENAME_PREFIX:偏好的輸出檔案名稱前置字串FILENAME_SUFFIX:偏好的輸出檔案名稱後置字串SHARD_TEMPLATE:偏好的輸出資料分割範本
後續步驟
- 瞭解 Dataflow 範本。
- 請參閱 Google 提供的範本清單。