首页 > 解决方案 > sparkr中的foreach函数

问题描述

我对 SparkR 比较陌生,我计划将 for 循环转移到 SparkR 中的 foreach 循环(R/3.3.3 和 Spark/2.2.0)。

我在stackoverflow上搜索过,唯一相关的线程是: SparkR foreach loop

但它只提供了使用其他操作的解决方法。

据我所知,存在一个sparkr包(https://amplab-extras.github.io/SparkR-pkg/rdocs/1.2/index.html)并包含foreach功能,但我真的不明白它的用例,其中我需要一些来自社区的帮助/示例来提供帮助。

我在原始 R 代码中的示例如下:

uniqueID <- unique(dataset$ID)
maxValueVector <- c()
for(id in uniqueID){
    maxValueVector <- c(maximums, max(dataset[which(dataset$ID == id), ]$value))
}

我知道 for 循环中的行应该分成几行,但是有没有我可以开始的例子,比如我可以开始的示例foreach代码?非常感谢!

psdataset包含 2 列:IDvalue.

标签: rapache-sparksparkr

解决方案


正如评论所说,在 SparkR 中,我们通常不想使用 foreach。在这种特殊情况下,我使用sparkdataframe运算符找到了答案并解决了这个问题:

## IDs is collected fo
IDs <- collect(distinct(select(dataset, 'ID')))
## I added the maximums column in order to figure out the future steps
## it basically satisfied what I need to have.
Maximums <- agg(groupBy(dataset, dataset$ID), maximums = max(dataset$value))
Maximums <- arrange(Maximums, desc(Maximums$maximums))

我知道,因为我还是新手,所以这个解决方案可能不是你想要的。但再次感谢您的评论!


推荐阅读