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 は true ではありません」と言います。これをどのように解決する必要がありますか?

4

1 に答える 1

1

%in% が Spark-1.5 でサポートされているかどうかはまだ確認していませんが、結合を介してフィルタリングすることは常に可能です。

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 に答える