rdd [vector] .filterNot用于修剪数据集

时间:2017-01-18 06:10:54

标签: scala apache-spark filter rdd

我有一个RDD [Vector],这是我的主要3d数据集...定义如下:

val vvv = dsx
      .map(x=>scaler.transform(Vectors.dense(x.days_d)).toArray ++ (x.freq_d/bv_max_freq).toArray ++ (x.food_d/bv_max_food).toArray)
      .map(x=>Vectors.dense(x(0),x(1),x(2))) 

我需要修剪上述数据集中的一些要点。这些点位于文本文件中并加载为

val pruning_ds = sc.textFile("/home/sys/scala/trackp/pruning_pts")
              .map(line=>line.split('\t'))
              .map(x=>Vectors.dense(x(3).toDouble,x(4).toDouble,x(5).toDouble))

所以我需要过滤第一个RDD,我确实喜欢这个

val pru_list = pruning_ds.collect().toList
val rdd_drop = vvv.filterNot(x=> pru_list contains(x))

但这不起作用

  

值filterNot不是其成员   org.apache.spark.rdd.RDD [org.apache.spark.mllib.linalg.Vector]

1 个答案:

答案 0 :(得分:1)

vvv.filter(x=> !pru_list.contains(x))