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

标签 apache-spark spark-streaming

我已经为我的Spark流媒体应用编写了自定义指标源/接收器,并且尝试从metrics.properties对其进行初始化-但这对执行者无效。我无法控制Spark集群中的机器,因此无法复制集群中$ SPARK_HOME/conf/中的属性文件。我将其保存在我的应用程序所在的胖子jar中,但是当我将胖子jar下载到集群中的工作程序节点上时,执行程序已经启动,并且它们的Metrics系统已经初始化-因此无法在其中选择具有自定义源配置的文件。

在此post之后,我指定了“spark.files = metrics.properties”和“spark.metrics.conf = metrics.properties”,但是到“metrics.properties”交付给执行者时,它们的度量系统已经初始化。

如果我初始化自己的指标系统,它将获取我的文件,但随后我将丢失主/执行者级别的指标/属性(例如executor.sink.mySink.propName = myProp-无法从“mySink”读取“propName” ),因为按Spark的公制,它们是initialized

在执行者initialize他们的指标系统之前,是否有(编程的)方式来交付“metrics.properties”?

更新1:我正在独立的Spark 2.0.0群集上尝试

Update2:关于实现此目的的技巧-在开始“实际” Spark 作业之前,启动一个虚拟作业以在每个工作程序上复制metrics.properties。然后使用已知的文件位置开始您的实际工作。缺点-如果一个 worker 死亡,而另一个 worker 取代了它,那么该文件将不在预先知道的路径中。解决方案的替代方案-当新的工作计算机启动时,它也会从git-repo中提取metrics.properties并将其放置在预先知道的路径中。尽管它可能会起作用,但它确实非常hacky,因此首选的解决方案是Spark在内部对其进行支持。

最佳答案

Spark metrics on wordcount example
基本上,我相信您需要添加--files以将metrics.properties发送给所有工作人员

关于apache-spark - 自定义源/接收器配置无法识别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39340080/

相关文章:

scala - Spark scala中运行时间戳差异

scala - 在 UDF 中使用时 Spark 累加器为空

google-cloud-platform - 在 java 中从 pub sub 流式传输时使用 PubSub-NullPointerException 进行 Spark Streaming

scala - 将 mapWithState stateSnapShots 实体化到数据库,以便稍后恢复 Spark 流应用程序

python - 在 spark 版本 2.2.0 中使用 python(pyspark) 从 mqtt 获取数据流

scala - 在 Spark 中将 sqlContext 作为隐式参数传递

python - 数据框上的多条件过滤器

scala - Spark/Mllib 以分布式方式训练许多 GaussianMixture 模型

apache-spark - 在spark Streaming中如何在n个批处理后重新加载查找非流rdd

apache-spark - Spark 异常 : Task failed while writing rows