首页 > 解决方案 > Google DataFlow Batch 类型作业卡在 BigQueryIO.Write/StreamingInserts 步骤

问题描述

我有一个批处理类型的数据流作业。我正在从 GCS 文件中读取 id,为每个 id 调用一些 API,API 为每个 id 返回 N 个项目。然后我尝试将所有这些项目写入 BigQuery 表。

该过程卡住了以下消息:

Processing stuck in step BigQueryIO.Write/StreamingInserts/StreamingWriteTables/Reshuffle/GroupByKey/Read for at least 05m00s without outputting or completing in state read-shuffle

注意:只有当我使用超过 1 个工人时才会发生这种情况。有 1 名工人一切正常。

更新:数据流参数:

    DataflowPipelineOptions options = PipelineOptionsFactory.as(DataflowPipelineOptions.class);
    options.setRunner(DataflowRunner.class);
    options.setProject("my-project");
    options.setJobName("my-job");
    options.setRegion("us-east1");
    options.setWorkerMachineType("n1-standard-1");
    options.setNumWorkers(2);
    options.setMaxNumWorkers(2);
    options.setSubnetwork("some_subnetwork");
    options.setStagingLocation("gs://bla/staging");
    options.setGcpTempLocation("gs://bla/temp");

更新 2:对于少量的输入 id,只有 1 个工作人员可以正常工作,因为只有在检索到所有实体后,Reshuffle 才能成功完成。如果我有很多输入 id 重新洗牌卡住等待所有前面的步骤完成。

标签: apache-beamdataflow

解决方案


推荐阅读