java - java bigquery存储写api
问题描述
使用此处记录的 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 客户端库版本应该可以解决此问题,因为为 JsonStreamwriter 添加了重新连接支持。它应该处理重试,而不是抛出此错误。
推荐阅读
- vba - 检索 ZIP 文件中的文件列表
- java - 如何使用 Java 和 PGP 公钥验证文件签名?
- tensorflow - 是否可以使用 fit_generator 洗牌验证数据
- c++ - 链接 CPP 文件进行测试时出现 LNK2019 错误
- android - 从源代码构建自己的 LineageOS 生成错误
- php - 购物车仍然显示已删除的产品 Laravel
- javascript - 在 Nativescript 中实现原生 android .aar 文件或 .aidl 会抛出原生 calss 对象而无法访问方法
- google-cloud-platform - google cloud sql v1beta4 是否仍处于测试阶段?
- c# - 在 c# 中隐藏代理生成的某些属性
- html - 如何减小 Photoshop 呈现的 HTML 电子邮件签名的大小?