减去sparkR

时间:2015-08-17 11:54:44

标签: sparkr

我在sparkR中有DataFrame'res'。 'res'包含ID和日期。所以第一个条目看起来像'ID'= 1 2 3 ...和'date'=“2012-6-5”,“2013-5-5”,“2015-10-11”...

我想创建一个新数据集,其中所有'日期'都会被“2010-01-01”减去。如何才能做到这一点? 如果我只是希望DataFrame中的所有元素都用整数减去,我就会遇到完全相同的问题。

在sparkR中我尝试了这个

newres <- withColumn(res, "subtract", res$date - as.Date("2010-01-01") )

这次运行但是当我输入head(newres)时出现错误:mesage:“returnstatus == 0不是True。”

1 个答案:

答案 0 :(得分:1)

在上一个问题(Convert string to date in sparkR)中,我读到类型转换不是在R而不是SparkR中执行的问题。在我的设置中,我可以将所有内容转换为R中的整数,并在SparkR中进行减法,如下所示:

df <- data.frame(user_id=c(1,1,2,2),
                time=c("2015-7-10","2015-8-04","2015-8-8","2015-7-10"))

df$time <- as.Date(df$time)
df$time <- as.numeric(df$time)

date <- as.numeric(as.Date("2010-01-01"))

res <- createDataFrame(sqlContext, df)

newRes <- withColumn(res, "subtract",res$time - date)

collect(newRes)

给了我

  user_id  time subtract
1       1 16626     2016
2       1 16651     2041
3       2 16655     2045
4       2 16626     2016

我希望这有效,因为你说你也有整数减法的问题......这个解决方案唯一的“问题”是R中的时间转换:现在你被限制在完全适合内存的DataFrames中你的R环境。