java - Spark 流式自定义指标

标签 java apache-spark jmx spark-streaming codahale-metrics

我正在开发一个 Spark Streaming 程序,该程序检索 Kafka 流,对流进行非常基本的转换,然后将数据插入数据库(如果相关,则为 voltdb)。 我正在尝试测量将行插入数据库的速率。我想metrics可能很有用(使用 JMX)。但是我找不到如何将自定义指标添加到 Spark。我查看了 Spark 的源代码,还发现了 this thread但是它对我不起作用。我还在 conf.metrics 文件中启用了 JMX 接收器。不起作用的是我没有使用 JConsole 看到我的自定义指标。

有人可以解释如何将自定义指标(最好通过 JMX)添加到 Spark Streaming 中吗?或者如何测量我对数据库(特别是 VoltDB)的插入率? 我在 Java 8 中使用 spark。

最佳答案

通过 source code 挖掘后确定我找到了如何添加自己的自定义指标。它需要 3 件事:

  1. 创建我自己的自定义 source .有点像 this
  2. 在 spark metrics.properties 文件中启用 Jmx 接收器。我使用的具体行是:*.sink.jmx.class=org.apache.spark.metrics.sink.JmxSink 为所有实例启用 JmxSink
  3. 在 SparkEnv 指标系统中注册我的自定义源。可以查看如何操作的示例 here - 我之前确实查看过此链接,但错过了注册部分,这使我无法在 JVisualVM 中实际看到我的自定义指标

我仍在为如何实际计算插入 VoltDB 的次数而苦苦挣扎,因为代码在执行程序上运行,但这是另一个主题的主题:)

我希望这对其他人有帮助

关于java - Spark 流式自定义指标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32843832/

相关文章:

java - 修补 Jersey 以使用 asm-4

java - Sublime Text 无法识别 NumberFormat

python - 在 IntelliJ IDEA 中编写并运行 pyspark

java - 从 VisualVM 通过 JMX 远程连接到 JBoss AS 时如何避免此 NullPointerException?

java - 是否可以在有条件的情况下在 Java 中声明变量?

javascript - 如何让服务器返回一个 html 文件?

apache-spark - 如何让 spark 为空的 Parquet 输出写一个 _SUCCESS 文件?

hadoop - 带有动态查找表的 Spark Streaming

java - 如何获取对象的历史记录或跟踪对象

java - 如何从 JMX 服务器获取 Mbean