unionAll函数无法在sparkR中运行

时间:2015-09-18 08:27:31

标签: sparkr

在SparkR中,我有一个DataFrame data,它也包含id。我还有一个liste= 2 9 12 102 154 ... 1451 length(liste)=3001。我想在data中输入id等于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不是真的”。怎么解决这个问题?

1 个答案:

答案 0 :(得分: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)