我有双打的数据集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);
}
}
);
检查对空向量[I]元素可能把你的清楚吗?
然后执行类似于vector.remove的操作(N)。其中“n”是从该载体移出所述元件。
Vector values = Vectors.dense(new double[vector_length]);
parsedData = parsedData.filter((Vector s) -> {
return !s.equals(Vectors.dense(new double[vector_length]));
});
正如在评论中提到的,RDD载体不能为NULL。但是,您可能想利用红色过滤法空(零)的载体。这可以通过创建一个空载体和过滤它来完成。