Pub/Sub 到 Cloud Storage Avro 檔案範本

「Pub/Sub 到 Cloud Storage 的 Avro 檔案」範本是一個串流管道,可從 Pub/Sub 主題讀取資料,並將 Avro 檔案寫入指定 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 則是資料分割數目。如果只有單一檔案,outputShardTemplateSS-of-NN 部分會是 00-of-01
  • 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 to Avro Files on Cloud Storage template。
  6. 在提供的參數欄位中輸入參數值。
  7. 按一下「Run Job」(執行工作)

gcloud

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

gcloud dataflow jobs run JOB_NAME \
    --gcs-location gs://dataflow-templates-REGION_NAME/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-central1
  • VERSION: 您要使用的範本版本

    您可以使用下列值:

  • 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-LOCATION/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 工作的專案 ID Google Cloud
  • JOB_NAME: 您選擇的不重複工作名稱
  • LOCATION: 您要部署 Dataflow 工作的地區,例如 us-central1
  • VERSION: 您要使用的範本版本

    您可以使用下列值:

  • STAGING_LOCATION:用於暫存本機檔案的位置 (例如 gs://your-bucket/staging)
  • TOPIC_NAME:Pub/Sub 主題名稱
  • BUCKET_NAME:Cloud Storage bucket 的名稱
  • FILENAME_PREFIX:偏好的輸出檔案名稱前置字串
  • FILENAME_SUFFIX:偏好的輸出檔案名稱尾碼
  • SHARD_TEMPLATE:偏好的輸出資料分割範本

後續步驟