如何使用ClusterClient
来检查作业是否失败以及原因?
ClusterClient#getJobStatus
似乎是一个很好的第一候选人,但它只说工作是否失败,没有任何关于例外的信息。
作业的提交是通过分离的客户端完成的,因此等待其ClusterClient#run
返回JobExecutionResult
不是一种选择。
我也试过RestClusterClient#retrieveJob
也不起作用,失败:
org.apache.flink.runtime.client.JobRetrievalException: Can't 检索前导作业管理器。 在 org.apache.flink.runtime.client.JobListeningContext.getJobManager(JobListeningContext.java:157( 在 org.apache.flink.runtime.client.JobListeningContext.getClassLoader(JobListeningContext.java:141( 在 org.apache.flink.runtime.client.JobClient.awaitJobResult(JobClient.java:262( 在 org.apache.flink.client.program.ClusterClient.retrieveJob(ClusterClient.java:586( at java.lang.Thread.run(Thread.java:745( 引起: org.apache.flink.runtime.leaderretrieval.LeaderRetrievalException: 无法检索领导者网关。 在 org.apache.flink.runtime.util.LeaderRetrievalUtils.retrieveLeaderGateway(LeaderRetrievalUtils.java:82( 在 org.apache.flink.runtime.client.JobListeningContext.getJobManager(JobListeningContext.java:152( ...10 更多 原因:java.util.concurrent.TimeoutException: Futures 在 [10000 毫秒] 后超时 scala.concurrent.impl.Promise$DefaultPromise.ready(Promise.scala:223( 在 scala.concurrent.impl.Promise$DefaultPromise.result(Promise.scala:227( at scala.concurrent.Await$$anonfun$result$1.apply(package.scala:190( 在 scala.concurrent.BlockContext$DefaultBlockContext$.blockOn(BlockContext.scala:53( at scala.concurrent.Await$.result(package.scala:190( at scala.concurrent.Await.result(package.scala( at org.apache.flink.runtime.util.LeaderRetrievalUtils.retrieveLeaderGateway(LeaderRetrievalUtils.java:80( ...11 更多
使用 NewClusterClient#requestJobResult 可以使用RestClusterClient
来完成。