【发布时间】:2017-09-08 17:50:39
【问题描述】:
我在我的 spark 应用程序中创建了缓存,每 6 小时刷新几个值。
代码如下所示。
val cachedList: Cache[String, String] = CacheBuilder.newBuilder()
.maximumSize(10)
.expireAfterWrite(refreshTimeInSeconds.toLong, TimeUnit.SECONDS)
.build()
此方法为我获取项目和缓存。
def prepareUnfilteredAccountList(): Array[String] = {
logger.info("Refreshing the UNFILTERED Accounts List from API")
val unfilteredAccounts = apiService.getElementsToCache().get.map(_.accountNumber).toArray
logger.trace("cached list has been refreshed New List is " +
unfilteredAccounts
}
此方法用于将缓存的值放入列表中。
def getUnfilteredList(): Array[String] = {
unfilteredAccounts.get("cached_list", new Callable[String]() {
override def call(): String = {
prepareUnfilteredAccountList().mkString(",")
}
}).split(",")
}
但是,我观察到每次调用都会刷新缓存,而不是在指定时间段后刷新。
【问题讨论】:
-
你试过增加maximumSize和refreshTimeInSeconds吗?
-
是的。我给出的最大尺寸为 200,时间为 6 小时。还是一样。
-
Srini :解决了吗?出了什么问题?
-
嗨,拉姆,不,没有解决。看起来我不能这样做。我需要一个需要不时刷新并为此目的使用缓存的小列表。但是,看起来我需要找到另一种选择。
标签: apache-spark google-guava-cache