从RDD滤波空值 火花

问题描述 投票:0回答:2

我有双打的数据集JavaRDD的形式。我想删除的行(向量)包含空值。我打算用过滤功能,为了做到这一点,但不能弄清楚如何做到这一点。我非常新的火花和mllib和会很感激,如果你能帮助我out.This是我分析的数据看起来像:

String path = "data.txt";
JavaRDD<String> data = sc.textFile(path);
JavaRDD<Vector> parsedData = data.map(
  new Function<String, Vector>() {
    public Vector call(String s) {
      String[] sarray = s.split(" ");
      double[] values = new double[sarray.length];
      for (int i = 0; i < sarray.length; i++)
        values[i] = Double.parseDouble(sarray[i]);
      return Vectors.dense(values);
    }
  }
);
java apache-spark filter rdd apache-spark-mllib
2个回答
0
投票

检查对空向量[I]元素可能把你的清楚吗?

然后执行类似于vector.remove的操作(N)。其中“n”是从该载体移出所述元件。


0
投票
Vector values = Vectors.dense(new double[vector_length]);
    parsedData = parsedData.filter((Vector s) -> {
         return !s.equals(Vectors.dense(new double[vector_length]));
    });

正如在评论中提到的,RDD载体不能为NULL。但是,您可能想利用红色过滤法空(零)的载体。这可以通过创建一个空载体和过滤它来完成。

© www.soinside.com 2019 - 2024. All rights reserved.