「Pub/Sub 到 Cloud Storage Text 範本」是一個串流管道,可從 Pub/Sub 主題讀取記錄,並將這些記錄儲存為一系列文字格式的 Cloud Storage 檔案。這個範本可以讓您快速儲存 Pub/Sub 中的資料,以備日後使用。根據預設,範本每 5 分鐘產生一個新檔案。
管道相關規定
- Pub/Sub 主題必須在執行前就已存在。
- 發布至主題的訊息必須使用文字格式。
- 發布至主題的訊息不得包含任何換行符號。請注意,在輸出檔案中每條 Pub/Sub 訊息都會儲存為一行。
範本參數
必要參數
- outputDirectory:寫入輸出檔案的路徑和檔案名稱前置字串,例如,
gs://bucket-name/path/
。這個值必須以斜線 (/) 結尾。 - outputFilenamePrefix:加在每個固定時段檔案的前置字串,例如,
output-
。預設值為 output。
選用參數
- inputTopic:要讀取輸入的 Pub/Sub 主題。主題名稱的格式應為
projects/<PROJECT_ID>/topics/<TOPIC_NAME>
。 - userTempLocation:使用者提供的目錄,用於輸出暫存檔案。結尾必須為斜線。
- outputFilenameSuffix:加在每個固定時段檔案的尾碼,通常是副檔名,例如
.txt
或.csv
。預設為空白。 - 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」(透過範本建立工作) 頁面。 前往「依據範本建立工作」
- 在「工作名稱」欄位中,輸入專屬工作名稱。
- 選用:如要使用區域端點,請從下拉式選單中選取值。預設區域為
us-central1
。如需可執行 Dataflow 工作的地區清單,請參閱「Dataflow 位置」。
- 從「Dataflow template」(Dataflow 範本) 下拉式選單中選取 the Pub/Sub to Text Files on Cloud Storage template。
- 在提供的參數欄位中輸入參數值。
- 選用:如要從「僅需處理一次」切換至「至少一次」串流模式,請選取「至少一次」。
- 按一下「Run Job」(執行工作)。
gcloud
在殼層或終端機中執行範本:
gcloud dataflow jobs run JOB_NAME \ --gcs-location gs://dataflow-templates-REGION_NAME/VERSION/Cloud_PubSub_to_GCS_Text \ --region REGION_NAME \ --staging-location STAGING_LOCATION \ --parameters \ inputTopic=projects/PROJECT_ID/topics/TOPIC_NAME,\ outputDirectory=gs://BUCKET_NAME/output/,\ outputFilenamePrefix=output-,\ outputFilenameSuffix=.txt
更改下列內容:
JOB_NAME
: 您選擇的不重複工作名稱REGION_NAME
: 您要部署 Dataflow 工作的地區,例如us-central1
VERSION
: 您要使用的範本版本您可以使用下列值:
latest
,使用範本的最新版本,該版本位於值區中非依日期命名的上層資料夾:gs://dataflow-templates-REGION_NAME/latest/- 版本名稱 (例如
2023-09-12-00_RC00
),用於指定範本版本,該版本會以巢狀結構存放在值區中依日期命名的上層資料夾中:gs://dataflow-templates-REGION_NAME/
STAGING_LOCATION
:用於暫存本機檔案的位置 (例如gs://your-bucket/staging
)TOPIC_NAME
:您的 Pub/Sub 主題名稱BUCKET_NAME
:Cloud Storage bucket 的名稱
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-LOCATION/VERSION/Cloud_PubSub_to_GCS_Text { "jobName": "JOB_NAME", "environment": { "ipConfiguration": "WORKER_IP_UNSPECIFIED", "additionalExperiments": [] }, "parameters": { "inputTopic": "projects/PROJECT_ID/topics/TOPIC_NAME" "outputDirectory": "gs://BUCKET_NAME/output/", "outputFilenamePrefix": "output-", "outputFilenameSuffix": ".txt", } }
更改下列內容:
PROJECT_ID
: 您要執行 Dataflow 工作的專案 ID Google CloudJOB_NAME
: 您選擇的不重複工作名稱LOCATION
: 您要部署 Dataflow 工作的地區,例如us-central1
VERSION
: 您要使用的範本版本您可以使用下列值:
latest
,使用範本的最新版本,該版本位於值區中非依日期命名的上層資料夾:gs://dataflow-templates-REGION_NAME/latest/- 版本名稱 (例如
2023-09-12-00_RC00
),用於指定範本版本,該版本會以巢狀結構存放在值區中依日期命名的上層資料夾中:gs://dataflow-templates-REGION_NAME/
STAGING_LOCATION
:用於暫存本機檔案的位置 (例如gs://your-bucket/staging
)TOPIC_NAME
:您的 Pub/Sub 主題名稱BUCKET_NAME
:Cloud Storage bucket 的名稱
後續步驟
- 瞭解 Dataflow 範本。
- 請參閱 Google 提供的範本清單。