【发布时间】:2019-03-10 21:14:22
【问题描述】:
在 Scala 应用程序中拥有内存中 LRU 缓存的正确方法是什么?
我尝试使用 Guava 缓存,但我认为因为即使我将其用作单例,它也无法序列化,因此每个微批处理都会实例化一个新缓存。
为了处理事件,我需要在外部数据源中查找一些元数据,因此我希望避免每次调用都通过网络,而是在本地缓存一段时间。
【问题讨论】:
标签: scala caching guava spark-structured-streaming
在 Scala 应用程序中拥有内存中 LRU 缓存的正确方法是什么?
我尝试使用 Guava 缓存,但我认为因为即使我将其用作单例,它也无法序列化,因此每个微批处理都会实例化一个新缓存。
为了处理事件,我需要在外部数据源中查找一些元数据,因此我希望避免每次调用都通过网络,而是在本地缓存一段时间。
【问题讨论】:
标签: scala caching guava spark-structured-streaming
您可以尝试在 mapGroupsWithState 或 flatMapGroupsWithState 中编写自己的逻辑
这是一个有状态的存储,可以保存用于查找的计算值
【讨论】: