0

在 SparkR 中,我有一个 DataFrame data,它也包含在内id。我也有一个liste= 2 9 12 102 154 ... 1451where length(liste)=3001。我想要dataid 等于 liste 的条目。在 sparkR 我这样做

newdata <- unionAll(filter(data, data$id == liste[1] ), filter(data, data$id == liste[2] ))
for(j in 3:10){
newdata <- unionAll(newdata, filter(data, data$id==good[j] ))
}

这 10 次迭代需要很长时间,大约 5 分钟。当我想做所有迭代时,即 3001,sparkR 说“错误 returnstatus==0 不正确”。应该如何解决这个问题?

4

1 回答 1

1

我尚未检查 Spark-1.5 是否支持 %in%,但始终可以通过连接进行过滤:

DF <- createDataFrame(sqlContext,
                      data.frame(id = c(1,1,2,3,3,4),
                                 value = c(1,2,3,4,5,6)))

goodID <- createDataFrame(sqlContext, data.frame(goodID = c(1,3)))

newData <- join(DF, goodID, DF$id == goodID$goodID)
newData$goodID <- NULL
collect(newData)
于 2015-09-18T12:18:30.407 回答