无法使用 Java API 获取数据流步骤信息

Unable to get Dataflow steps information using Java API

我正在尝试使用以下代码获取一个活动流作业stepsjobMetrics信息:

val jobMetrics = dataflowClient.projects().jobs().getMetrics(projectId, jobId).execute().getMetrics
val steps = dataflowClient.projects().jobs().get(projectId, jobId).execute().getSteps

但是,即使我能够获得 jobMetrics 信息,这些步骤总是返回 null。 关于我做错了什么的任何指示?

抱歉,我是 Java 文盲,但关于您需要的详细信息,我可以向您指出 Dataflow API 中的哪个端点来获取它们。我的示例是通过使用 curl 向数据流 API 发送 HTTP 请求来完成的。

要使用 Dataflow API 检索 steps,请使用 projects.jobs.get endpoint and specify what JobView you want. JOB_VIEW_ALL is required to return job.steps

使用的示例 curl 命令:

curl -X GET -H "Content-Type: application/json" -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) https://dataflow.googleapis.com/v1b3/projects/my-project/locations/us-central1/jobs/2022-01-13_19_11_56-999999999999?view=JOB_VIEW_ALL

带有 steps 的响应片段:


但是如果遵循 Dataflow Java API。您需要构建 GetJobRequest to include setView() with Enum JobView as the parameter. Using code snippet from getJob() documentation:

 try (JobsV1Beta3Client jobsV1Beta3Client = JobsV1Beta3Client.create()) {
   GetJobRequest request =
       GetJobRequest.newBuilder()
           .setProjectId("your-project")
           .setJobId("jobId101296568")
           .setView(JobView.forNumber(2)) // try 2 as value for JOB_VIEW_ALL as per Enum JobView documentation provided above
           .setLocation("us-central1")
           .build();
   Job response = jobsV1Beta3Client.getJob(request);
 }

上面的代码片段应该 return Job object where you can try doing getSteps() 看看它是否会 return 一些东西。