以ceratin间隔将数据写入cassandra

qrjkbowd  于 2021-06-15  发布在  Cassandra
关注(0)|答案(1)|浏览(305)

我正在spark中进行某种处理,并希望实现一种功能,即无论正在运行何种处理,我都希望安排一个计时器(间隔5分钟),将一些数据持久化到cassandra(或者说任何其他源代码)
为了让它更容易理解,它听起来像两个并行运行的任务,一个是跟踪5分钟的时间间隔,这将写入cassandra,另一个是做所有的处理,我告诉它做。
就像我在处理流数据,然后我把处理的输出缓存在spark中作为temp table,这个缓存的表在spark脚本中的某个地方再次使用,但只是在一段时间之后,我想在cassandra中持久化。
任何形式的帮助都是感激的

ecr0jaav

ecr0jaav1#

您可以使用两个API:
1-spark streaming并使用mapwithstate函数:https://spark.apache.org/docs/latest/streaming-programming-guide.html
在这种情况下,可以为mapwithstate设置5分钟超时,并将输出写入cassandra。
2-spark structured streaming和mapgroupswithstate/flatmapgroupswithstate函数:它为您设置超时提供了更好的灵活性(您可以同时使用事件时间或处理时间)。缺点是api非常新,对cassandra的支持有限。

相关问题