我正在使用云数据流将数据从 Pub/Sub 消息导入到 BigQuery 表。我正在使用 DynamicDestinations,因为这些消息可以放入不同的表中。
我最近注意到该进程开始消耗所有资源,并且消息表明该进程被卡住开始显示:
Processing stuck in step Write Avros to BigQuery Table/StreamingInserts/StreamingWriteTables/StreamingWrite for at least 26h45m00s without outputting or completing in state finish at sun.misc.Unsafe.park(Native Method) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at java.util.concurrent.FutureTask.awaitDone(FutureTask.java:429) at java.util.concurrent.FutureTask.get(FutureTask.java:191) at org.apache.beam.sdk.io.gcp.bigquery.BigQueryServicesImpl$DatasetServiceImpl.insertAll(BigQueryServicesImpl.java:765) at org.apache.beam.sdk.io.gcp.bigquery.BigQueryServicesImpl$DatasetServiceImpl.insertAll(BigQueryServicesImpl.java:829) at org.apache.beam.sdk.io.gcp.bigquery.StreamingWriteFn.flushRows(StreamingWriteFn.java:131) at org.apache.beam.sdk.io.gcp.bigquery.StreamingWriteFn.finishBundle(StreamingWriteFn.java:103) at 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
这条日志消息可能看起来很可怕,但它是并不表示有问题。此消息试图传达的是您的管道已经执行相同的操作一段时间了。
这不一定是问题:您的文件可能足够大,需要一段时间才能写入。如果您遇到此问题时担心看到这些消息,请考虑您拥有什么样的管道,以及认为它可能有一些缓慢的步骤是否有意义。
就您而言,您的管道已经写入了 26 小时,所以这肯定是一个问题。我认为该问题与旧版本 Beam 中的库引入的死锁有关。这在较新的版本中不应该成为问题(例如 2.15.0)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)