标签: apache-spark spark-streaming
以字数为例,当应用程序启动并长时间运行,并收到一个单词"Spark",然后在结果表中有一行(Spark,1),
"Spark"
应用程序运行1天甚至一周后,应用程序再次收到"Spark",因此结果表应该有一行(spark,2)。
我只是使用上面的场景来提出问题:无界表如何保持它接收的数据的状态,因为在应用程序运行很长时间后状态可能会非常巨大。
另外,当使用"Complete"输出模式时,如果结果表非常大,那么将结果表中的所有数据写出来沉没将是非常昂贵的
"Complete"
答案 0 :(得分:1)
为了避免内存中的大量数据,Spark结构化流媒体使用水印。主要思想是仅在内存中存储特定时间窗内的数据。此窗口外的所有数据都存储在文件系统中。您可以阅读有关水印here或here