如何将jar附加到正在执行作业的Spark集群上?

时间:2018-08-10 09:47:58

标签: java scala apache-spark

火花流真的很棒。 但是当我使用它时,遇到了一个问题。

场景:我使用Spark Streaming来消耗来自Kafka的消息。 当前有两个主题,我将它们硬编码。但这对扩展性不好。

例如,如果有一个新主题,我需要为镶木地板架构定义一个scala类。然后停止运行中的火花并再次启动火花。

我期望的是spark仍在运行,我可以添加新的jar库,并通知spark将新类加载到新的jar中。因此spark可以使用新的主题消息并将相关的实木复合地板写入HDFS。

很高兴您可以给我一些建议。 我搜索了动态加载,但问题是如何在不停止的情况下将新的jar连接到现有的运行中的Spark。

谢谢。

1 个答案:

答案 0 :(得分:0)

元数据是您案例的理想解决方案。您需要维护元数据服务,火花流应用程序将使用该元数据服务作为其使用者的参考。

类似的事情通过REST API公开-

{
topicName: {},
schema: {},
outputPath:
}

并从自定义SparkListener实现添加触发器。