自定义源/接收器配置无法识别

K P*_*K P 9 apache-spark spark-streaming

我已经为我的Spark流媒体应用编写了我的自定义指标源/接收器,我正在尝试从metrics.properties初始化它 - 但是这不适用于执行程序.我无法控制Spark集群中的计算机,因此无法在集群中的$ SPARK_HOME/conf /中复制属性文件.我把它放在我的应用程序所在的胖罐中,但是当我的胖罐被下载到集群中的工作节点时,执行器已经启动并且它们的度量系统已经初始化 - 因此不会选择其中包含自定义源配置的文件.

在这篇文章之后,我已经指定了' spark.files = metrics.properties'和'spark.metrics.conf = metrics.properties',但是当'metrics.properties'发送给执行者时,他们的度量系统已经初始化了.

如果我初始化我自己的度量系统,它正在拾取我的文件,但后来我缺少master/executor级别度量/属性(例如,executor.sink.mySink.propName = myProp - 无法从'mySink'读取'propName' )因为它们是由Spark的公制系统初始化的.

是否有(程序化的)方法在执行者初始化他们的度量系统之前发布'metrics.properties' ?

Update1:​​我在独立的Spark 2.0.0集群上尝试这个

更新2:想到实现这一目标 - 在开始'实际'火花工作之前,开始一个虚拟工作来复制每个工人的metrics.properties.然后使用预先知道的文件位置开始您的实际工作.缺点 - 如果一个工人死亡而另一个工人占据了它的位置,它将不会在预先知道的路径中拥有该文件.解决方案替代方案 - 当新的工作机器启动时,它也会从您的git-repo中提取metrics.properties并将其置于预先知道的路径中.虽然它可能有用,但它非常hacky并且首选的解决方案是Spark在内部支持它.

Ass*_*son 1

请参阅字数统计示例中的 Spark 指标 基本上我相信您需要添加 --files 将metrics.properties发送给所有工作人员