写入BigQuery时处理卡住了

4
我正在使用云Dataflow将数据从Pub/Sub消息导入到BigQuery表格中。我使用DynamicDestinations,因为这些消息可以被放置到不同的表中。
最近我注意到该过程开始消耗所有资源,并且显示了卡住的消息,如下所示: 处理已卡在步骤Write Avros to BigQuery Table/StreamingInserts/StreamingWriteTables/StreamingWrite至少26h45m00s,未输出或完成状态完成(处于finish状态)sun.misc.Unsafe.park(Native Method) java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) java.util.concurrent.FutureTask.awaitDone(FutureTask.java:429) java.util.concurrent.FutureTask.get(FutureTask.java:191) org.apache.beam.sdk.io.gcp.bigquery.BigQueryServicesImpl$DatasetServiceImpl.insertAll(BigQueryServicesImpl.java:765) org.apache.beam.sdk.io.gcp.bigquery.BigQueryServicesImpl$DatasetServiceImpl.insertAll(BigQueryServicesImpl.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$DoFnInvoker.invokeFinishBundle(Unknown Source) 目前,简单地取消管道并重新启动似乎能暂时解决问题,但我似乎无法确定进程被卡住的原因。
管道正在使用beam-runners-google-cloud-dataflow-java版本2.8.0和google-cloud-bigquery版本1.56.0。

如果问题仍然存在,请向GCP支持团队提交工单,以便我们进行调查。https://cloud.google.com/support/ - Udi Meiri
2个回答

1
这个日志信息可能看起来很吓人,但它并不表示有问题。这条消息试图传达的是你的管道已经执行了同样的操作一段时间了。
这不一定是一个问题:你的文件可能足够大,需要花费一些时间来写入。如果你担心看到这些消息,请考虑你的管道类型,以及是否有一些步骤比较慢。
在您的情况下,您的管道已经写了26个小时,因此这肯定是一个问题。我相信问题与Beam旧版本中引入的库相关的死锁有关。在更近期的版本中(例如2.15.0),这不应该是一个问题。

0

也许我来晚了,但这可能会对某些人有所帮助。 我也遇到了类似的错误,而且是在beam的2.22版本中出现的。 但事实证明,这并不是问题所在,在异常抛出之前,还存在着一些错误,这些错误被静默地传递给了INFO。

BigQuery insertAll error, retrying, Not found: Dataset <projectname>:<datasetname>

有了错误,管道就会运行数天。

当我修复了上述错误后,事情开始正常工作。因此,你可能会发现其他不可原谅的异常悄悄地潜入其中。

真实故事!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接