2017-04-11 140 views
1

我正在設置Apache Spark羣集以執行實時流式計算,並希望通過跟蹤批量大小,批處理時間等各種指標來監控部署的性能。我Spark Streaming程序寫入ScalaSpark Streaming - 獲取批次級別的性能統計信息

問題

  1. Spark monitoring REST API說明列出了各個端點可用。但是,我找不到公開批次級別信息的終端。有沒有辦法讓已經運行的應用程序和其他每批次的詳細信息,如所有Spark批次列表如下:
    • 每批事件數
    • 處理時間
    • 調度延遲
    • 退出狀態:即批是否被成功處理
  2. 如果批處理級API不可用,可以通過向Spark流程程序添加自定義工具來獲得批處理級統計信息(例如:大小,處理時間,計劃延遲等)。

由於提前,

+0

關於2.這個答案可能有助於http://stackoverflow.com/questions/41980447/in-spark-streaming-is-there-a-way-to-detect-when-a-batch-has-finished/ 41981256#41981256 – ImDarrenG

回答

3

如果你有1沒有運氣,這將有助於2:

ssc.addStreamingListener(new JobListener()); 

// ... 

class JobListener implements StreamingListener { 

    @Override 
    public void onBatchCompleted(StreamingListenerBatchCompleted batchCompleted) { 

     System.out.println("Batch completed, Total delay :" + batchCompleted.batchInfo().totalDelay().get().toString() + " ms"); 

    } 

    /* 

    snipped other methods 

    */ 


} 

In Spark Streaming, is there a way to detect when a batch has finished?

batchCompleted.batchInfo()contains摘自:

  • numRecords
  • batchTimeprocesssingStartTimeprocessingEndTime
  • schedulingDelay
  • outputOperationInfos

希望你可以讓你從這些屬性所需要的。

+0

謝謝@ImDarrenG!如果這樣做,它肯定會爲我做這項工作。一旦我在我的代碼中測試過它,我會接受答案。 – jithinpt

+0

只是注意到你使用的是Scala,對不起,我複製/粘貼的例子是java,但你希望得到它的要點。 – ImDarrenG

+1

這很好。我知道了。謝謝。 – jithinpt