我正在spark中进行某种处理,并且想要实现一项功能,无论正在运行的处理如何,我都希望安排一个计时器(以5分钟为间隔),该计时器将一些数据持久化到Cassandra中(或让s说其他任何来源)
为了更容易理解,听起来好像两个任务并行运行,一个正在跟踪5分钟的时间间隔,这将写入Cassandra,另一个正在执行我已告诉它要做的所有处理。 / p>
就像我正在对流数据进行处理一样,然后将处理的输出缓存在spark中作为临时表,并且此缓存的表再次在spark脚本中的某个地方使用,但仅在一段时间后才想保留在Cassandra中
感谢任何帮助
答案 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的支持是有限的。