我正在使用云数据流将数据从发布/订阅消息导入到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
发布于 2019-09-24 21:21:37
此日志消息可能看起来很可怕,但它不是问题的指示。这条消息试图传达的信息是,您的管道已经执行相同的操作一段时间了。
这不一定是问题:您的文件可能足够大,需要一段时间才能写入。如果你在这个问题上担心你看到了这些消息,请考虑你已经有了什么样的管道,以及认为它可能有一些缓慢的步骤是否有意义。
在你的例子中,你的流水线已经写了26个小时,所以这肯定是个问题。我认为这个问题与旧版本的Beam中的一个库引入的死锁有关。在较新的版本(例如2.15.0)中,这应该不是问题。
发布于 2020-08-04 17:21:40
也许我参加聚会来晚了。但它可能会帮助一些人..。我也遇到过类似的错误,在beam的2.22版本中也是如此。但事实证明,这实际上不是问题所在,在抛出异常之前,有一些错误被静默地传递到INFO中。
BigQuery insertAll error, retrying, Not found: Dataset <projectname>:<datasetname>
在出现错误的情况下,管道将持续运行数天。
当我修复了上面的错误时,一切都开始正常工作。因此,您可能会有其他不可原谅的异常悄悄地悄悄地出现。
真实故事!
https://stackoverflow.com/questions/54716332
复制相似问题