首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sparkR中函数的运行时间

sparkR中函数的运行时间
EN

Stack Overflow用户
提问于 2015-08-14 09:18:20
回答 1查看 129关注 0票数 0

在sparkR中,我有一个DataFrame 'pgz‘,它包含用户的数据。要获得“pgz”中的所有user_id 1,我们只需键入

代码语言:javascript
复制
filter(pgz, pgz$user_id==1)

我有一个'liste‘,这是一个DataFrame。它只是包含数字(1,3,4,5,11,25,.)。我把这个放在本地,这样我就能拿到参赛作品了。

代码语言:javascript
复制
localliste <- collect(liste)

现在'localliste‘是一个data.frame。然后我有一个函数'lev‘

代码语言:javascript
复制
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)
}

它还能返回。当我在小j上运行这个函数时,这个函数非常快。计算t需要大约0.01秒。当我选择larg时,函数计算t的时间要长一些。当j=1002计算时,计算lev(j)需要40秒。

这是一件奇怪的事。要运行'lev‘中的第一行,只需花时间

代码语言:javascript
复制
t<-as.Date(first(user_id_pgz)[,6][1])

对于较大的j值,需要时间。但是,如果j=1000或j=50000的运行时间是40秒,那么这是很重要的,但是对于j=25,运行时间大约是1秒。那是为什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-14 11:35:01

我已经创建了一个最小的示例,在这个示例中,每个user_id获得第6列的第一项。首先,我使用user_id列和col6创建了一个col6(像您的6,然后按user_id分组(与过滤相同)),最后,每个组使用第一个元素。这样,每个user_id都有结果,也许列表中的元素更少?

代码语言:javascript
复制
df <- data.frame(user_id=c(1,1,2,2),
                 col6=c("2015-7-31","2015-8-31","2015-8-31","2015-7-31"))

pgz <- createDataFrame(sqlContext, df)
pgz$col6 <- cast(pgz$col6,'date')

results <- collect(agg(group_by(pgz,pgz$user_id),firstCol6 = first(pgz$col6)))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32006545

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档