【问题标题】:BigQueryIO.writeTableRows writes to BigQuery with very high delayBigQueryIO.writeTableRows 以非常高的延迟写入 BigQuery
【发布时间】:2020-06-06 17:10:43
【问题描述】:

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

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));

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

【问题讨论】:

  • 您的管道中是否设置了任何窗口?
  • @JoachimIsaksson 仅 1 分钟
  • 您确定数据不存在,它可能在流缓冲区中吗?您可以通过执行“SELECT * FROM table WHERE _PARTITIONTIME IS NULL”来检查这一点
  • 为问题添加了更新。 @xeli
  • 您能否提供更多详细信息,说明您如何检查选项 1 与选项 2 的延迟情况。

标签: google-bigquery google-cloud-dataflow apache-beam apache-beam-io


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-25
    • 2020-09-18
    • 2020-08-27
    • 1970-01-01
    • 2019-03-08
    • 1970-01-01
    • 2023-01-18
    • 2018-12-21
    相关资源
    最近更新 更多