2017-04-11 141 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