r - 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 列:ID
和value
.
解决方案
正如评论所说,在 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))
我知道,因为我还是新手,所以这个解决方案可能不是你想要的。但再次感谢您的评论!