2017-10-12 82 views
3

我正在爲我的數據流作業使用Java Beam SDK,而com.google.api.services.dataflow.model.Job類提供了有關特定作業的詳細信息。然而,它不提供任何方法/屬性來獲取數據流步驟的信息,例如元素的加入估計大小如何使用Java Beam SDK獲取數據流作業的步驟詳細信息?

enter image description here

下面是我用得到這份工作的代碼信息,

PipelineResult result = p.run();   
String jobId = ((DataflowPipelineJob) result).getJobId(); 
DataflowClient client = DataflowClient.create(options); 
Job job = client.getJob(jobId); 

我正在尋找類似的東西,

job.getSteps("step name").getElementsAdded(); 
job.getSteps("step name").getEstimatedSize(); 

提前致謝。

回答

1

SinkMetrics類提供bytesWritten()方法和elementsWritten()方法。此外,SourceMetrics課程提供了一個elementsRead()和一個bytesRead()方法。

如果您使用org.apache.beam.sdk.metrics包中的類來查詢這些度量並逐步過濾,則應該能夠獲取停止的基礎指標(即讀取的元素)。

我想補充一點,如果你願意看到Beam Java SDK以外的版本,因爲你運行在Google Cloud Dataflow上,所以你可以使用Google Dataflow API特別是,你可以使用projects.jobs.getMetrics來獲取包括寫/讀元素的數量。您需要對指標進行一些解析,因爲即使是一項簡單的工作,也有數百個指標,但您要查找的基礎數據是通過此API調用呈現的(我剛測試過)。

相關問題