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

标签 java scala apache-spark

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/

相关文章:

java - 多个登录页面 Spring

java - 如何在Java中拆分括号和,

java - 来自 Json 的 Android 登录屏幕

python - 在自定义函数上加入两个 RDD - SPARK

amazon-web-services - Hadoop 2.9.2、Spark 2.4.0 访问 AWS s3a 存储桶

apache-spark - Spark Partitionby 无法按预期扩展

java - 处理——运动图像留下痕迹

arrays - 如何在 Scala 中对数组的前几个元素应用函数?

eclipse - jvm/scala/lift 应用程序堆栈?

scala - scala 中泛型抽象类型的模式匹配