小编典典

是否可以在Apache Spark中创建嵌套的RDD?

java

我正在尝试在Spark中实现K最近邻算法。我想知道是否可以使用嵌套的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();
        }    
    }
);
}

目前,此嵌套设置出现错误(我可以在此处发布完整日志)。可以放拳头吗?谢谢


阅读 374

收藏
2020-09-26

共1个答案

小编典典

不,这是不可能的,因为RDD的项必须可序列化,而RDD不可序列化。这是有道理的,否则您可能会通过网络传输整个RDD,如果其中包含大量数据,这将是一个问题。如果它不包含很多数据,则可能并且应该使用数组或类似的东西。

但是,我不知道您是如何实现K近邻的…但是要小心:如果您执行诸如计算每两个点之间的距离之类的操作,那么实际上这在数据集大小上是不可扩展的,因为它是O
(n2)。

2020-09-26