Pub/Sub 主題或訂閱項目到 Cloud Storage 文字檔案範本

「Pub/Sub 主題或訂閱項目到 Cloud Storage 文字」範本是一個串流管道,可從 Pub/Sub 讀取記錄,並將這些記錄儲存為一系列文字格式的 Cloud Storage 檔案。這個範本可以讓您快速儲存 Pub/Sub 中的資料,以備日後使用。根據預設,範本每 5 分鐘產生一個新檔案。

管道相關規定

  • 執行前必須先有 Pub/Sub 主題或訂閱項目。
  • 發布至主題的訊息必須使用文字格式。
  • 發布至主題的訊息不得包含任何換行符號。請注意,在輸出檔案中每條 Pub/Sub 訊息都會儲存為一行。

範本參數

必要參數

  • outputDirectory:寫入輸出檔案的路徑和檔案名稱前置字串,這個值必須以斜線結尾。例如:gs://your-bucket/your-path/

選用參數

  • inputTopic:要讀取輸入的 Pub/Sub 主題。如果提供這個參數,請勿使用 inputSubscription。例如:projects/<PROJECT_ID>/topics/<TOPIC_NAME>
  • inputSubscription:要讀取輸入內容的 Pub/Sub 訂閱項目。如果提供這個參數,請勿使用 inputTopic。例如:projects/<PROJECT_ID>/subscription/<SUBSCRIPTION_NAME>
  • userTempLocation:使用者提供的目錄,用於輸出暫存檔案。結尾必須為斜線。
  • outputFilenamePrefix:加在每個固定時段檔案的前置字串,例如,output-。預設值為 output。
  • outputFilenameSuffix:加在每個固定時段檔案的尾碼,通常是副檔名如 .txt.csv。例如:.txt。預設為空白。
  • outputShardTemplate:資料分割範本會定義每個固定時段檔案的動態部分。根據預設,管道使用單一資料分割來輸出到每個時段內的檔案系統。這表示所有資料會按時段輸出至單一檔案。outputShardTemplate 預設為 W-P-SS-of-NN;其中 W 是時段日期範圍,P 是窗格資訊,S 是資料分割編號,而 N 則是資料分割數目。如果只有單一檔案,outputShardTemplateSS-of-NN 部分會是 00-of-01
  • numShards:寫入時產生的輸出資料分割數量上限;分片數量越多,寫入 Cloud Storage 的處理量就越高,但處理輸出 Cloud Storage 檔案時,分片間的資料彙整費用可能會更高。預設值為 0。
  • windowDuration:資料寫入輸出目錄的時間間隔。根據管道的輸送量設定時間長度。舉例來說,如果需要較高的總處理量,可能就得縮小視窗大小,讓資料能放入記憶體。預設值為 5m (5 分鐘),最小值為 1s (1 秒)。允許的格式為:[int]s (以秒為單位,例如 5s)、[int]m (以分鐘為單位,例如 12m)、[int]h (以小時為單位,例如 2h)。例如 5m
  • yearPattern:年份格式設定模式。必須是 yY 的一或多個值。大小寫在年份中沒有差別。模式可以選擇性地以非英數字元或目錄 (/) 字元包裝。預設值為 YYYY
  • monthPattern:月份的格式模式。必須是一或多個 M 字元。模式可以選擇性地以非英數字元或目錄 (/) 字元包裝。預設值為 MM
  • dayPattern:格式化日期的模式。必須是當月第幾天 (d) 或當年的第幾天 (D)。大小寫在年份中沒有差別。模式可以選擇性地以非英數字元或目錄 (/) 字元包裝。預設值為 dd
  • hourPattern:小時格式的模式。必須是一或多個 H 字元。模式可以選擇性地以非英數字元或目錄 (/) 字元包裝。預設值為 HH
  • minutePattern:分鐘的格式模式。必須是一或多個 m 字元。模式可以選擇性地以非英數字元或目錄 (/) 字元包裝。預設值為 mm

執行範本

控制台

  1. 前往 Dataflow 的「Create job from template」(透過範本建立工作) 頁面。
  2. 前往「依據範本建立工作」
  3. 在「工作名稱」欄位中,輸入專屬工作名稱。
  4. 選用:如要使用區域端點,請從下拉式選單中選取值。預設區域為 us-central1

    如需可執行 Dataflow 工作的地區清單,請參閱「Dataflow 位置」。

  5. 從「Dataflow template」(Dataflow 範本) 下拉式選單中選取 the Pub/Sub Topic or Subscription to Text Files on Cloud Storage template。
  6. 在提供的參數欄位中輸入參數值。
  7. 按一下「Run Job」(執行工作)

gcloud

在殼層或終端機中執行範本:

gcloud dataflow flex-template run JOB_NAME \
    --project=YOUR_PROJECT_ID \
    --region REGION_NAME \
    --template-file-gcs-location gs://dataflow-templates-REGION_NAME/VERSION/flex/Cloud_PubSub_to_GCS_Text_Flex \
    --parameters \
inputSubscription=projects/PROJECT_ID/subscriptions/SUBSCRIPTION_NAME,\
outputDirectory=gs://BUCKET_NAME/output/,\
outputFilenamePrefix=output-,\
outputFilenameSuffix=.txt

更改下列內容:

  • JOB_NAME: 您選擇的不重複工作名稱
  • REGION_NAME: 您要部署 Dataflow 工作的地區,例如 us-central1
  • VERSION: 您要使用的範本版本

    您可以使用下列值:

  • SUBSCRIPTION_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/flexTemplates:launch
{
  "launch_parameter": {
    "jobName": "JOB_NAME",
    "parameters": {
       "inputSubscription": "projects/PROJECT_ID/subscriptions/SUBSCRIPTION_NAME"
       "outputDirectory": "gs://BUCKET_NAME/output/",
       "outputFilenamePrefix": "output-",
       "outputFilenameSuffix": ".txt",
    },
    "containerSpecGcsPath": "gs://dataflow-templates-LOCATION/VERSION/flex/Cloud_PubSub_to_GCS_Text_Flex",
  }
}

更改下列內容:

  • PROJECT_ID: 您要執行 Dataflow 工作的專案 ID Google Cloud
  • JOB_NAME: 您選擇的不重複工作名稱
  • LOCATION: 您要部署 Dataflow 工作的地區,例如 us-central1
  • VERSION: 您要使用的範本版本

    您可以使用下列值:

  • SUBSCRIPTION_NAME:您的 Pub/Sub 訂閱項目名稱
  • BUCKET_NAME:Cloud Storage bucket 的名稱

後續步驟