带聚合的火花流
Posted
技术标签:
【中文标题】带聚合的火花流【英文标题】:spark streaming with aggregation 【发布时间】:2016-05-05 19:42:50 【问题描述】:我试图从聚合原则的角度来理解火花流。 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】:Spark 允许您将状态存储在 rdd(带有检查点)中。因此,即使重启后,作业也会从检查点恢复状态并继续流式传输。
但是,我们面临着检查点的性能问题(特别是在恢复状态之后),因此值得使用一些外部源(如 hbase)来实现 storint 状态
【讨论】:
为了支持 Natalia 的回答,有许多数据存储可以连接到 spark 或与 spark 集成,并且可以存储聚合状态(如果检查点无法正常工作)。 Hbase 就是其中之一。还有SnappyData、Cassandra、redis 和MemSQL 等等。各有利弊。以上是关于带聚合的火花流的主要内容,如果未能解决你的问题,请参考以下文章