带聚合的 Spark 流式传输

tes*_*k03 5 apache-spark spark-streaming apache-spark-sql

我试图从聚合原理的角度理解火花流。Spark DF 基于小批量,并且计算是在特定时间窗口内的小批量上完成的。

假设我们的数据如下 -

    Window_period_1[Data1, Data2, Data3]
    Window_period_2[Data4, Data5, Data6] 

..
Run Code Online (Sandbox Code Playgroud)

然后首先计算 Window_period_1,然后计算 Window_period_2。如果我需要使用新的传入数据以及历史数据,比如说 Window_period_new 与 Window_period_1 和 Window_period_2 中的数据之间的 groupby 函数,我该怎么做?

查看同一事物的另一种方式是,如果我有一个已经创建了一些数据框的要求 -

df1、df2、df3 和我需要运行一个聚合,其中涉及来自 df1、df2、df3 和 Window_period_1、Window_period_2 的数据以及所有新传入的流数据

我该怎么做呢?

Nat*_*lia 2

Spark 允许您在 rdd 中存储状态(带有检查点)。因此,即使重新启动后,作业也会从检查点恢复其状态并继续流式传输。

然而,我们面临着检查点的性能问题(特别是在恢复状态之后),因此值得使用一些外部源(例如 hbase)来实现 storint 状态