我目前正在Spark Streaming应用程序上执行性能测试。 一般来说,我通过套接字连接接收JSON消息,每秒一条消息。 然后,我使用Spark Streaming方法将消息作为RDD处理,最后将生成的RDD打印到数据库中。
这是我的问题:无论何时我想检查块处理时间或Schedulling Delays等,我都需要在端口4040上访问Spark UI。
我想要做的是,在程序运行时创建一个带有这些值的Log,并将其作为txt文件存储在某个目录中。
现在我知道,使用SparkContext,我可以使用addSparkListener方法,例如Logger。
如何为Spark Streaming上下文执行此操作?
非常感谢,如果我感到困惑,请道歉。
答案 0 :(得分:0)
一个选项是查询Sparks REST API,它通过JSON格式的HTTP请求公开这些指标:
除了在UI中查看指标外,它们还可以作为JSON使用。这为开发人员提供了一种为Spark创建新的可视化和监视工具的简便方法。 JSON既可用于正在运行的应用程序,也可用于历史记录服务器。端点安装在/ api / v1。例如,对于历史服务器,它们通常可以在http://:18080 / api / v1上访问,对于正在运行的应用程序,可以在http://localhost:4040/api/v1访问。
端点列出了所有可用的URI以及它们公开的数据。您可以拥有一个服务,在流处理期间查询该数据并分析指标。