【发布时间】:2017-06-02 10:11:10
【问题描述】:
我有一个 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))
但这不起作用并且
value filterNot 不是 org.apache.spark.rdd.RDD[org.apache.spark.mllib.linalg.Vector]
【问题讨论】:
-
使用
vvv.filter(x=> !pru_list.contains(x)),RDD没有filterNot方法作为错误状态。 -
谢谢@TzachZohar ....是的,我犯了愚蠢的错误.....你的回答完全正确......谢谢你的回应。我会把它作为答案
标签: scala apache-spark filter rdd