我想在Spark中實現K最近鄰算法。我想知道是否可以使用嵌套的RDD。這會讓我的生活變得更輕鬆。考慮下面的代碼片段。是否可以在Apache Spark中創建嵌套的RDD?
public static void main (String[] args){
//blah blah code
JavaRDD<Double> temp1 = testData.map(
new Function<Vector,Double>(){
public Double call(final Vector z) throws Exception{
JavaRDD<Double> temp2 = trainData.map(
new Function<Vector, Double>() {
public Double call(Vector vector) throws Exception {
return (double) vector.length();
}
}
);
return (double)z.length();
}
}
);
}
目前我遇到這個嵌套設置錯誤(我可以在這裏發佈完整的日誌)。是否允許在第一個地方?謝謝
感謝馬克。你的意見對我有意義。 但是,我想通過這種方法來減少每個測試實例的最近鄰居。因爲我也認爲嵌套的RDD可能不可行,所以我開始以不同的老式方式實施。 –
也許有更聰明的方法。例如,在Spark機器學習庫中找到的DBSCAN實現中,整個數據集空間被劃分爲多個框,以便計算鄰居的複雜性降低。如果你對它感興趣,你可以在github上找到代碼,這可能是提高性能的一個好方法(實際上它做的比我告訴你的要複雜得多,但這是潛在的想法)。 – mgaido
只是爲了記錄 - RDD是可序列化的。這實際上不是一個序列化問題。 – zero323