如何接收Pipeline Dataflow作业失败的根本原因

时间:2018-03-28 13:01:15

标签: error-handling google-cloud-dataflow apache-beam

我在Dataflow中运行我的管道。我想使用其ID从Dataflow作业收集所有错误消息。我正在使用Apache-beam 2.3.0和Java 8。

DataflowPipelineJob dataflowPipelineJob = ((DataflowPipelineJob) entry.getValue());
String jobId = dataflowPipelineJob.getJobId();
DataflowClient client = DataflowClient.create(options);
Job job = client.getJob(jobId);

有没有办法只从管道接收错误消息?

1 个答案:

答案 0 :(得分:1)

阅读Dataflow日志消息的程序化支持不是很成熟,但有几个选项:

  1. 由于您已拥有DataflowPipelineJob实例,因此可以使用waitUntilFinish()重载,该重载接受JobMessagesHandler参数来过滤和捕获错误消息。您可以在自己的waitUntilFinish()实施中看到DataflowPipelineJob如何使用它。

  2. 或者,您可以使用Dataflow REST API查询作业日志:projects.jobs.messages/list。 API会使用minimumImportance参数,以便您只查询错误。

  3. 请注意,在这两种情况下,都可能存在错误消息,这些消息不会致命,也不会直接导致作业失败。