Spark流处理与聚合

5
我将尝试解释Spark Streaming的聚合原理。Spark DF基于小批量数据,计算是在特定时间窗口内到达的小批量数据上进行的。
假设我们有以下数据输入 -
    Window_period_1[Data1, Data2, Data3]
    Window_period_2[Data4, Data5, Data6] 

..

首先将为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 和所有新进入的流数据的数据。

我该怎么做呢?

1个回答

2

Spark允许您在RDD中存储状态(使用检查点)。因此,即使在重新启动后,作业也将从检查点恢复其状态并继续流式处理。

然而,我们遇到了检查点性能问题(特别是在恢复状态后),因此值得实现使用一些外部源(如HBase)来存储状态。


为了支持Natalia的回答,有许多数据存储可以连接或集成Spark,并且可以存储聚合状态(如果检查点不起作用)。其中之一是Hbase。还有SnappyDataCassandraredisMemSQL等等。所有这些都有各种优缺点。 - plamb

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接