如何将实时和批处理合并到一个应用程序中?

时间:2016-07-28 15:12:37

标签: scala apache-spark batch-processing spark-streaming

我的应用程序有一个严重的用例。

在第一部分中,我正在处理从kafka出来的数据日志以构建连接会话(spark-streaming)。 这些会话checkpoint - 编辑并保留in-memorymapWithState())以进行进一步的实时处理,即应用程序的第二部分。

我想要添加到应用程序的批处理分支出现问题。 其目的与前面提到的第一部分相同,即构建会话 - 但这一次,基于目录中的日志文件。

AIM:我希望能够在批处理目录中获取文件后立即自动暂停我的实时处理, 处理它,将新计算的会话提供给应用程序(即到第二部分),然后接管它停止的实时处理。

你知道怎么做吗?

编辑: Basic Application scheme.

红色圆圈指出问题所在位置。如图所示,我有两个输入,一个来自kafka用于实时处理,另一个来自特定目录用于批处理。 如上所示,第2部分即Process Sessions在两种处理方法之间共享,实际上我们必须保留in-memory每个会话的数据。

批处理具有纠正循环的作用,因此强制在任何实时会话之前处理,这意味着rakesh提到的专有条款。

0 个答案:

没有答案