在 sparkR 中,我有一个包含用户数据的 DataFrame 'pgz'。要获取 'pgz' 中的所有 user_id 1,我们只需键入
filter(pgz, pgz$user_id==1)
我有一个“列表”,它是一个 DataFrame。它只包含数字 (1,3,4,5,11,25,....)。我将其设为本地,以便获取条目。
localliste <- collect(liste)
现在'localliste'是一个data.frame。然后我有一个函数'lev'
lev <- function(j) {
user_id_pgz <- filter(pgz, pgz$user_id==as.numeric(localliste[j]))
t <- as.Date(first(user_id_pgz)[,6][1])
return(t)
}
返回't'。当我在小 j 上运行此功能时,该功能非常快。计算 t 大约需要 0.01 秒。当我选择一个较大的 j 时,该函数需要更长的时间来计算 t。当 j=1002 时,计算 lev(j) 需要 40 秒。
这是一件奇怪的事情。运行'lev'中的第一行不需要时间,而是行
t<-as.Date(first(user_id_pgz)[,6][1])
大 j 需要时间。然而,如果 j=1000 或 j=50000 运行时间为 40 秒,则无关紧要,但对于 j=25,运行时间约为 1 秒。这是为什么 ?