Java 写入BigQuery时处理被卡住

Java 写入BigQuery时处理被卡住,java,google-bigquery,google-cloud-dataflow,Java,Google Bigquery,Google Cloud Dataflow,我使用云数据流将数据从发布/订阅消息导入到BigQuery表。我使用DynamicDestinations,因为这些消息可以放在不同的表中 我最近注意到,该流程开始消耗所有资源,并显示消息表明该流程已被卡住,开始显示: 在java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)java.util.concurrent.FutureTask.waitdone的sun.misc.Unsafe.park(Native Metho

我使用云数据流将数据从发布/订阅消息导入到BigQuery表。我使用DynamicDestinations,因为这些消息可以放在不同的表中

我最近注意到,该流程开始消耗所有资源,并显示消息表明该流程已被卡住,开始显示:

在java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)java.util.concurrent.FutureTask.waitdone的sun.misc.Unsafe.park(Native Method)处输出或完成状态完成的情况下,将Avros写入BigQuery表/streamingInsert/StreamingWriteTables/StreamingWriteTables/streamingWriteWrite至少26h45m00秒(FutureTask.java:429)在java.util.concurrent.FutureTask.get(FutureTask.java:191)在org.apache.beam.sdk.io.gcp.bigquery.BigQueryServiceSiml$DatasetServiceImpl.insertAll(BigQueryServiceSiml.java:765)在org.apache.beam.sdk.io.gcp.BigQueryServiceSiml$DatasetServiceImpl.insertAll(BigQueryServiceSiml.java:829)在org.apache.beam.sdk.io.gcp.bigquery.StreamingWriteFn.flushRows(StreamingWriteFn.java:131)在org.apache.beam.sdk.io.gcp.bigquery.StreamingWriteFn.finishBundle(StreamingWriteFn.java:103)在org.apache.beam.sdk.io.gcp.bigquery.StreamingWriteFn$dofinvoker.invokinesfundle(未知源)

目前,简单地取消管道并重新启动它似乎可以暂时解决问题,但我似乎无法确定流程受阻的原因


管道正在使用beam runners google cloud dataflow java 2.8.0版和google cloud bigquery 1.56.0版

此日志消息可能看起来很可怕,但它并不表示有问题。此消息试图传达的是,您的管道已经执行相同的操作一段时间了

这不一定是个问题:你的文件可能足够大,以至于他们需要一段时间来写。如果你在这个问题上看到了这些信息,请考虑一下你有什么样的流水线,以及是否认为有一些缓慢的步骤是有道理的。



在您的情况下,您的管道已经编写了26个小时,因此这肯定是一个问题。我相信这个问题与旧版本Beam中的库引入的死锁有关。在较新版本(例如2.15.0)中,这不应该是一个问题。

可能是我参加聚会迟到了。但这可能会对某人有所帮助。。 我也遇到了类似的错误,在beam的2.22版本中也是如此。 但事实证明,这并不是问题所在,在抛出异常之前,有一些错误在INFO中以静默方式传递

BigQuery insertAll error, retrying, Not found: Dataset <projectname>:<datasetname>
BigQuery插入所有错误,正在重试,未找到:数据集:
有了这个错误,管道将继续运行数天

当我修复了上面的错误后,一切都很顺利。所以,你可能会有其他不可原谅的异常悄悄地出现


真实情况!

如果这种情况仍在发生,请打开GCP支持的记录单,以便我们进行调查。