Google bigquery BigQueryIO.writeTableRows以非常高的延迟写入BigQuery

Google bigquery BigQueryIO.writeTableRows以非常高的延迟写入BigQuery,google-bigquery,google-cloud-dataflow,apache-beam,apache-beam-io,Google Bigquery,Google Cloud Dataflow,Apache Beam,Apache Beam Io,下面的代码片段显示了BigQuery的写入方法(它从PubSub获取数据)。“Write to BigQuery”数据流步骤接收TableRow数据,但它以非常高的延迟(超过3-4小时)写入BigQuery,或者根本不写入数据。日志中没有错误/警告,我可以在这里看到数据。我希望它尽可能通用,所以不希望在代码中提供模式。此代码段是否存在任何可能导致此行为的错误 PCollection<TableRow> tableRows; ... tableRows.apply("Write to

下面的代码片段显示了BigQuery的写入方法(它从PubSub获取数据)。“Write to BigQuery”数据流步骤接收TableRow数据,但它以非常高的延迟(超过3-4小时)写入BigQuery,或者根本不写入数据。日志中没有错误/警告,我可以在这里看到数据。我希望它尽可能通用,所以不希望在代码中提供模式。此代码段是否存在任何可能导致此行为的错误

PCollection<TableRow> tableRows;
...
tableRows.apply("Write to BigQuery",
      BigQueryIO.writeTableRows().to(options.getTable())
      .withExtendedErrorInfo()
      .withCreateDisposition(CreateDisposition.CREATE_NEVER)
      .withWriteDisposition(WriteDisposition.WRITE_APPEND)
      .withMethod(Method.STREAMING_INSERTS)
      .withFailedInsertRetryPolicy(InsertRetryPolicy.retryTransientErrors()));

现在它工作正常了。原始版本的代码有什么问题?

问题已经解决,这是infra问题。

您的管道中是否设置了任何窗口?@JoachimIsaksson仅1分钟您确定数据不存在,它可能在流缓冲区中?您可以通过在问题中添加“SELECT*FROM table WHERE _PARTITIONTIME为NULL”更新来检查这一点@您能否提供更多详细信息,说明您是如何检查选项1与选项2的延迟的。
tableRows.apply("Write to BigQuery",
  BigQueryIO.writeTableRows().to(options.getTable())
  .withCreateDisposition(CreateDisposition.CREATE_NEVER));