替代递归 运行 Spark 提交作业

Alternate to recursively Running Spark-submit jobs

以下是我需要建议的场景,

场景:

通过 Nifi 将数据摄取到 Hive 表中。

Spark 程序必须对 Hive 中的数据执行 ETL 操作和复杂的连接。

由于从 Nifi 摄取的数据是连续流式传输,我希望 Spark 作业 运行 每 1 或 2 分钟对摄取的数据进行一次。

哪个是最好的选择?

使用调度程序每 1 分钟触发一次 spark-submit 作业? 我们如何减少递归提交作业到 spark 集群的开销和时间延迟?有没有更好的方法来递归地 运行 单个程序?

运行 火花流作业? 火花流作业能否每 1 分钟自动触发一次并处理来自配置单元的数据? [Spark-Streaming可以只基于时间触发吗?]

有没有其他有效的机制来处理这种情况?

提前致谢

  1. 如果你需要每分钟运行的东西,你最好使用 spark-streaming 而不是批处理。
  2. 您可能希望直接从 kafka 而不是从 hive table 获取数据,因为它更快。

关于你的问题,batch/stream哪个更好。您可以将 Spark Streaming 视为每 "batch interval" 运行一次的微批处理。

读这个:https://spark.apache.org/docs/latest/streaming-programming-guide.html