【发布时间】:2021-10-08 03:12:41
【问题描述】:
使用此处记录的 java bigquery 存储 API https://cloud.google.com/bigquery/docs/write-api。 根据https://cloud.google.com/bigquery/docs/write-api#error_handling
,当发生不可重试错误之一时,保持写入流长期存在并刷新它我坚持使用默认流。我有两个表和不同部分的代码负责写入每个表,维护自己的流编写器。
如果数据在流动,一切都很好。没有错误。但是我也想测试刷新流编写器的工作,所以我等待默认流超时(10 分钟)关闭流并再次尝试写入。我可以很好地创建流,那里没有错误,但是对于其中一个表,我不断收到被取消的错误,包含在前提条件中失败,使我的代码一次又一次地刷新。
原始错误,因为流因不活动而关闭
! io.grpc.StatusRuntimeException: FAILED_PRECONDITION: Stream is closed due to com.google.api.gax.rpc.AbortedException: io.grpc.StatusRuntimeException: ABORTED: Closing the stream because it has been inactive for 600 seconds. Entity: projects/<id>/datasets/<id>/tables/<id>/_default
! at com.google.cloud.bigquery.storage.v1beta2.StreamWriterV2.appendInternal(StreamWriterV2.java:263)
! at com.google.cloud.bigquery.storage.v1beta2.StreamWriterV2.append(StreamWriterV2.java:234)
! at com.google.cloud.bigquery.storage.v1beta2.JsonStreamWriter.append(JsonStreamWriter.java:114)
! at com.google.cloud.bigquery.storage.v1beta2.JsonStreamWriter.append(JsonStreamWriter.java:89)
新流上的进一步重复错误
! io.grpc.StatusRuntimeException: FAILED_PRECONDITION: Stream is closed due to com.google.api.gax.rpc.CancelledException: io.grpc.StatusRuntimeException: CANCELLED: io.grpc.Context was cancelled without error
! at com.google.cloud.bigquery.storage.v1beta2.StreamWriterV2.appendInternal(StreamWriterV2.java:263)
! at com.google.cloud.bigquery.storage.v1beta2.StreamWriterV2.append(StreamWriterV2.java:234)
! at com.google.cloud.bigquery.storage.v1beta2.JsonStreamWriter.append(JsonStreamWriter.java:114)
! at com.google.cloud.bigquery.storage.v1beta2.JsonStreamWriter.append(JsonStreamWriter.java:89)
我不确定为什么它被取消而没有错误。有关如何调试此问题的任何指示或有关如何维护和刷新长寿命流式编写器的建议?
【问题讨论】:
-
你能解决这个问题吗?您能否提供有关如何重现您遇到的错误的更多详细信息?你能分享代码和示例输入表来重现它吗?
标签: java google-cloud-platform google-bigquery