将R中的ddply转换为sparkR函数

时间:2016-07-20 13:46:12

标签: r plyr lapply sparkr

我有一个包含数百万行的数据框df。我将ddply与用户定义的函数udf一起使用。

res <- ddply(df, c("id"),function(x){udf(x)} 

这非常有效,但由于udf,它非常慢(大约需要4个小时)。它会检查很多案例。

我想在sparkR中运行相同的功能。 Spark集成在R环境中。我可以在sparkR中执行基本操作,但找不到可以替换ddply的函数。有没有人有想法?

1 个答案:

答案 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
    })

我希望这会有所帮助。