java - 如何将 jar 附加到正在执行作业的 spark 集群?
问题描述
Spark 流式传输真的很棒。但是当我使用它时,我遇到了一个问题。
场景:我使用 Spark Streaming 来消费来自 Kafka 的消息。目前有两个主题,我对它们进行了硬编码。但这不利于可扩展性。
例如,如果有一个新主题,我需要为 parquet 模式定义一个 scala 类。然后停止运行的火花并再次启动火花。
我期待的是 spark 仍在运行,我可以添加新的 jar 库并通知 spark 在新 jar 中加载新类。因此 spark 可以消费新的主题消息并将相关的 parquet 写入 HDFS。
非常感谢您能给我一些建议。我搜索了动态加载,但问题是如何将新 jar 附加到现有正在运行的 spark 而不停止它。
先感谢您。
解决方案
元数据是您案例的理想解决方案。您需要维护一个元数据服务,该服务由 spark 流应用程序用作其消费者的参考。
像这样的东西通过 REST API 暴露出来——
{
topicName: {},
schema: {},
outputPath:
}
并从自定义 SparkListener 实现中添加触发器。
推荐阅读
- html - BeautifulSoup find() 与现有文本不匹配
- c++ - 抛出实例“std::out_of_range”后调用终止
- java - 数组中的数组和输出
- mysql - MYSQL SELECT 2 条件状态
- r - 从文件名中提取信息
- unity3d - 如何在 Unity 中应用变换
- java - ListView OnClickItems 在 Android 中更改项目颜色
- firebase - 如何限制 Firebase 中的计费?他们曾经有这种可能性,看起来他们删除了它
- postgresql - 恢复期间无法执行 ANALYZE
- docker - Kubernetes - statefulSet 和卷权限