我有一个包含数百万行的数据框df
。我将ddply
与用户定义的函数udf
一起使用。
res <- ddply(df, c("id"),function(x){udf(x)}
这非常有效,但由于udf
,它非常慢(大约需要4个小时)。它会检查很多案例。
我想在sparkR中运行相同的功能。 Spark集成在R环境中。我可以在sparkR中执行基本操作,但找不到可以替换ddply
的函数。有没有人有想法?
答案 0 :(得分:0)
使用SparkR 2.0,您可以使用gapplyCollect函数执行类似的操作(通过“id”进行格式化,然后在每行的列上应用您自己的函数):
res <- gapplyCollect(
df,
"id",
function(key, x) {
y <- data.frame(key, max(x$column1), mean(x$column2), udf(x$column3))
colnames(y) <- c("id", "max_col1", "mean_col2", "udf_result")
y
})
我希望这会有所帮助。