gpt4 book ai didi

java - BigQueryIO.writeTableRows() 中的 GroupByKey 节点不发出元素

转载 作者:行者123 更新时间:2023-11-30 05:32:16 27 4
gpt4 key购买 nike

我的流数据流管道从 PubSub 提取数据,不会写入 BigQuery,也不会记录任何错误。这些元素进入节点“Write to BigQuery/StreamingInserts/StreamingWriteTables/Reshuffle/GroupByKey”:

enter image description here

它是这样隐式创建的:

PCollection<TableRow> rows = ...;
rows.apply("Write to BigQuery",
BigQueryIO.writeTableRows().to(poptions.getOutputTableName())
.withSchema(...)
.withWriteDisposition(BigQueryIO.Write.WriteDisposition.WRITE_APPEND)
.withMethod(BigQueryIO.Write.Method.STREAMING_INSERTS)
.withFailedInsertRetryPolicy(InsertRetryPolicy.alwaysRetry())
.withExtendedErrorInfo());

但元素永远不会离开它,或者至少不会在系统延迟(现在为 45 分钟)内。这应该是一个流作业 - 我怎样才能使它刷新并写入数据?这是光束版本 2.13.0。谢谢。

更新 - 将数据写入 BigQuery 的步骤的 StackDriver 日志(无错误):

Write step StackDriver log

我还可以补充一点,如果我在云中使用 DirectRunner(但仅适用于少量数据),并且如果我使用 BigQuery 的 java 接口(interface)逐行插入(但这至少是两个订单),则这可以工作数量级太慢而无法开始)。

最佳答案

您可以尝试将重试策略更改为 InsertRetryPolicy.retryTransientErrors()。如果存在某些配置错误(例如 BigQuery 表不存在或无权访问它),alwaysRetry() 策略将导致管道看起来停止进展。失败总是会重试,因此它们永远不会被报告为失败。

您还可以在 Stackdriver Logging 中检查工作线程日志。通过单击步骤日志 Pane 右上角的“Stackdriver”链接来执行此操作。完整说明位于 Dataflow logging documentation .

关于java - BigQueryIO.writeTableRows() 中的 GroupByKey 节点不发出元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57278889/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com