使用 Dataflow 命令行界面

使用 Dataflow 托管式服务运行流水线时,您可以使用 Dataflow 命令行界面获取有关 Dataflow 作业的信息。Dataflow 命令行界面是 Cloud SDK 中命令行工具的一部分。

如果您希望使用 Cloud Console 查看 Dataflow 作业并与之交互,请使用 Dataflow 监控界面

安装 Dataflow 命令行组件

如需从本地终端使用 Dataflow 命令行界面,请安装并配置 Cloud SDK

对于 Cloud Shell,Dataflow 命令行界面是自动提供的。

运行命令

您可以通过运行可用命令来与 Dataflow 命令行界面进行交互。如需查看可用的 Dataflow 命令列表,请将如下命令输入到 Shell 或终端窗口:

  gcloud dataflow --help

如输出所示,Dataflow 命令包含以下三个组:flex-templatejobssql

Flex 模板命令

借助 flex-template 子命令组,您可以使用 Dataflow Flex 模板。支持以下操作:

  • build:根据指定参数构建 Flex 模板文件。
  • run:从指定路径运行作业。

如需运行模板,您必须创建存储在 Cloud Storage 存储分区中的模板规范文件。模板规范文件包含运行作业所需的所有信息,例如 SDK 信息和元数据。此外,metadata.json 文件包含模板的相关信息,例如名称、说明和输入参数。创建模板规范文件后,您可以使用 Java 或 Python 构建 Flex 模板。

如需使用 gcloud command-line tool 创建并运行 Flex 模板,请参阅使用灵活模板的教程。

Jobs 命令

借助 jobs 子命令组,您可以在项目中使用 Dataflow 作业。支持以下操作:

  • cancel:取消与命令行参数匹配的所有作业。
  • describe:输出通过 Get API 生成的 Job 对象。
  • drain:排空与命令行参数匹配的所有作业。
  • list:列出特定项目中的所有作业,可选择按区域过滤。
  • run:从指定路径运行作业。
  • show:显示指定作业的简短说明。

如需获取项目中所有 Dataflow 作业的列表,请在 shell 或终端中运行以下命令:

gcloud dataflow jobs list

该命令会返回当前作业列表。以下是输出示例:

  ID                                        NAME                                    TYPE   CREATION_TIME        STATE   REGION
  2015-06-03_16_39_22-4020553808241078833   wordcount-janedoe-0603233849            Batch  2015-06-03 16:39:22  Done    us-central1
  2015-06-03_16_38_28-4363652261786938862   wordcount-johndoe-0603233820            Batch  2015-06-03 16:38:28  Done    us-central1
  2015-05-21_16_24_11-17823098268333533078  bigquerytornadoes-johndoe-0521232402    Batch  2015-05-21 16:24:11  Done    europe-west1
  2015-05-21_13_38_06-16409850040969261121  bigquerytornadoes-johndoe-0521203801    Batch  2015-05-21 13:38:06  Done    us-central1
  2015-05-21_13_17_18-18349574013243942260  bigquerytornadoes-johndoe-0521201710    Batch  2015-05-21 13:17:18  Done    europe-west1
  2015-05-21_12_49_37-9791290545307959963   wordcount-johndoe-0521194928            Batch  2015-05-21 12:49:37  Done    us-central1
  2015-05-20_15_54_51-15905022415025455887  wordcount-johndoe-0520225444            Batch  2015-05-20 15:54:51  Failed  us-central1
  2015-05-20_15_47_02-14774624590029708464  wordcount-johndoe-0520224637            Batch  2015-05-20 15:47:02  Done    us-central1

使用针对每个作业显示的作业 ID,您可以运行 describe 命令来显示有关作业的更多信息。

gcloud dataflow jobs describe JOB_ID

JOB_ID 替换为项目中某个 Dataflow 作业的作业 ID

例如,如果您针对作业 ID 2015-02-09_11_39_40-15635991037808002875 运行上述命令,则输出示例如下:

createTime: '2015-02-09T19:39:41.140Z'
currentState: JOB_STATE_DONE
currentStateTime: '2015-02-09T19:56:39.510Z'
id: 2015-02-09_11_39_40-15635991037808002875
name: tfidf-bchambers-0209193926
projectId: google.com:clouddfe
type: JOB_TYPE_BATCH

如需将结果的格式设置为 JSON,请使用 --format=json 选项运行以下命令:

gcloud --format=json dataflow jobs describe JOB_ID

JOB_ID 替换为项目中某个 Dataflow 作业的作业 ID

以下示例输出的格式为 JSON:

{
  "createTime": "2015-02-09T19:39:41.140Z",
  "currentState": "JOB_STATE_DONE",
  "currentStateTime": "2015-02-09T19:56:39.510Z",
  "id": "2015-02-09_11_39_40-15635991037808002875",
  "name": "tfidf-bchambers-0209193926",
  "projectId": "google.com:clouddfe",
  "type": "JOB_TYPE_BATCH"
}

SQL 命令

通过 sql 子命令组,您可以使用 Dataflow SQL。gcloud Dataflow sql query 命令在 Dataflow 上接受并运行用户指定的 SQL 查询。

例如,如需对从 BigQuery 数据集读取数据并将数据写入另一个 BigQuery 数据集的 Dataflow 作业运行简单的 SQL 查询,请在 shell 或终端中运行以下命令:

gcloud dataflow sql query 'SELECT word FROM
bigquery.table.PROJECT_ID.input_dataset.input_table
where count > 3'
    --job-name=JOB_NAME \
    --region=us-west1 \
    --bigquery-dataset=OUTPUT_DATASET \
    --bigquery-table=OUTPUT_TABLE

请替换以下内容:

  • PROJECT_ID:项目的全局唯一名称
  • JOB_NAME:Dataflow 作业的名称
  • OUTPUT_DATASET:输出数据集的名称
  • OUTPUT_TABLE:输出表的名称

启动 Dataflow SQL 作业可能需要几分钟时间才能完成。作业创建后无法更新。Dataflow SQL 作业使用自动扩缩功能,Dataflow 会自动选择执行模式:批量或流式模式。您无法控制 Dataflow SQL 作业的此行为。如需停止 Dataflow SQL 作业,请使用 cancel 命令。不支持通过 drain 停止 Dataflow SQL 作业。

如需详细了解如何为 Dataflow 使用 SQL 命令,请参阅 Dataflow SQL 参考文档gcloud Dataflow sql query 文档。

将命令与区域端点结合使用

gcloud 工具 176 版起,Dataflow 命令行界面就支持区域端点。通过将 --region 选项与任何命令结合使用,即可指定用于管理作业的区域端点。

例如,gcloud dataflow jobs list 可列出所有区域的作业,但 gcloud dataflow jobs list --region=europe-west1 仅可列出 europe-west1 区域管理的作业。