Spark 流确实很棒。 但是当我使用它时,我遇到了一个问题。
场景:我使用 Spark Streaming 来消费来自 Kafka 的消息。 目前有两个主题,我对它们进行了硬编码。但它不利于可扩展性。
例如,如果有一个新主题,我需要为 parquet 模式定义一个 scala 类。然后停止正在运行的 Spark 并再次启动 Spark 。
我期望的是spark仍在运行,我可以添加新的jar库并通知spark在新jar中加载新类。这样spark就可以消费新的主题消息并将相关的parquet写入HDFS。
非常感谢您能就此向我提出一些建议。 我搜索了动态加载,但问题是如何将新的 jar 附加到现有正在运行的 Spark 而不停止它。
提前谢谢您。
最佳答案
元数据是适合您情况的理想解决方案。您需要维护一个元数据服务,该服务由 Spark Streaming 应用程序使用,作为其使用者的引用。
类似的东西通过 REST API 公开 -
{
topicName: {},
schema: {},
outputPath:
}
并从自定义 SparkListener 实现中添加触发器。
关于java - 如何将 jar 附加到正在执行作业的 Spark 集群?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51783700/