首页 > 解决方案 > BigQueryIO.writeTableRows 以非常高的延迟写入 BigQuery

问题描述

以下代码片段显示了 BigQuery 的写入方法(它从 PubSub 获取数据)。“写入 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()));

更新:我将代码修改为:

tableRows.apply("Write to BigQuery",
  BigQueryIO.writeTableRows().to(options.getTable())
  .withCreateDisposition(CreateDisposition.CREATE_NEVER));

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

标签: google-bigquerygoogle-cloud-dataflowapache-beamapache-beam-io

解决方案


问题已解决,是基础问题。


推荐阅读