如何接收管道数据流工作失败的根本原因



我正在数据流中运行管道。我想使用其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. 由于您已经拥有DataflowPipelineJob实例,因此您可以使用waitUntilFinish() Overload接受JobMessagesHandler参数来过滤和捕获错误消息。您可以在其自己的waitUntilFinish()实现中看到DataflowPipelineJob如何使用它。

  2. 另外,您可以使用DataFlow REST API:projects.jobs.messages/list查询作业日志。API包含一个minimumImportance参数,该参数允许您仅查询错误。

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

最新更新