Apache spark 度量系统无法识别应用程序jar中的自定义源/接收器
后续行动 我在我的应用程序jar中添加了自定义源和接收器,并找到了一种在独立集群节点上获取静态固定metrics.properties的方法。当我想启动我的应用程序时,我给出了静态路径-spark.metrics.conf=“/fixed path/to/metrics.properties”。尽管我的自定义源/接收器在我的代码/fat jar中,但我在CustomSink上得到ClassNotFoundException 我的胖jar(其中包含自定义源代码/接收器代码)位于hdfs上,具有对所有源代码的读取权限 下面是我已经尝试设置的内容(因为执行者无法在我的应用程序fat jar中找到自定义源/接收器):Apache spark 度量系统无法识别应用程序jar中的自定义源/接收器,apache-spark,spark-streaming,Apache Spark,Spark Streaming,后续行动 我在我的应用程序jar中添加了自定义源和接收器,并找到了一种在独立集群节点上获取静态固定metrics.properties的方法。当我想启动我的应用程序时,我给出了静态路径-spark.metrics.conf=“/fixed path/to/metrics.properties”。尽管我的自定义源/接收器在我的代码/fat jar中,但我在CustomSink上得到ClassNotFoundException 我的胖jar(其中包含自定义源代码/接收器代码)位于hdfs上,具有对所
我的理解正确吗?此外,还有什么我可以试试的吗?如果任何人有定制源/接收器的经验,将不胜感激。为了使用定制源/接收器,必须使用spark submit--files分发它,并通过spark.executor.extraClassPath设置它当我需要扩展现有的
GraphiteSink
类时,我偶然发现了相同的ClassNotFoundException,下面是我如何解决它的
首先,我在org.apache.spark.metrics.sink
包中创建了一个CustomGraphiteSink
类:
package org.apache.spark.metrics.sink;
公共类CustomGraphiteSink扩展了GraphiteSink{}
然后我在metrics.properties
*.sink.graphite.class=org.apache.spark.metrics.sink.CustomGraphiteSink
并通过以下方式将此文件传递给spark submit:
--conf spark.metrics.conf=metrics.properties