以ceratin间隔将数据写入cassandra

时间:2018-10-05 07:17:21

标签: apache-spark timer cassandra parallel-processing

我正在spark中进行某种处理,并且想要实现一项功能,无论正在运行的处理如何,我都希望安排一个计时器(以5分钟为间隔),该计时器将一些数据持久化到Cassandra中(或让s说其他任何来源)

为了更容易理解,听起来好像两个任务并行运行,一个正在跟踪5分钟的时间间隔,这将写入Cassandra,另一个正在执行我已告诉它要做的所有处理。 / p>

就像我正在对流数据进行处理一样,然后将处理的输出缓存在spark中作为临时表,并且此缓存的表再次在spark脚本中的某个地方使用,但仅在一段时间后才想保留在Cassandra中

感谢任何帮助

1 个答案:

答案 0 :(得分:1)

您可以使用两种API:

1- Spark Streaming并使用mapWithState函数:https://spark.apache.org/docs/latest/streaming-programming-guide.html

在这种情况下,您可以为mapWithState设置5分钟的超时并将输出写入  卡桑德拉。

2- Spark结构化流和mapGroupsWithState / flatMapGroupsWithState函数: 它为设置超时提供了更好的灵活性(您可以同时使用事件时间或处理时间)。缺点是API非常新,并且对Cassandra的支持是有限的。