如何访问Spark Streaming应用程序中的缓存数据?

Yas*_*r S 5 apache-spark spark-streaming

我有一个带有来自我的物联网应用程序的JSON数据的Kafka经纪人。我从Spark Streaming应用程序连接到此服务器,以便进行一些处理。

我想将json数据的某些特定字段保存在内存(RAM)中,我相信我可以使用cache()persist()运算符来实现。

下次当我在Spark Streaming应用程序中收到新的JSON数据时,我检入内存(RAM)中是否有可检索的公共字段。如果是,我做了一些简单的计算,最后更新了保存在内存(RAM)中的字段的值。

因此,我想知道以前描述的内容是否可行。如果是,我是否必须使用cache()或persist()?以及如何从内存中检索字段?

Jac*_*ski 4

可以使用cache/persist来存储 Spark 应用程序中的数据(不一定仅适用于 Spark Streaming 应用程序 - 这是Spark 中缓存的更常见用途)。

但是......在 Spark Streaming 中,您对此类用例(称为状态计算)有特殊支持。请参阅Spark Streaming 编程指南来探索可能性。

我认为对于您的用例,mapWithState运算符正是您所追求的。