我有一个 RDD,x,其中有两个字段:id、value。如果一行有一个特定的值,我想获取 id 并过滤掉具有该 id 的所有行。
例如,如果我有:
id1,value1
id1,value2
如果具有该 id 的任何行的值为 value1,我想过滤掉所有 id,那么我希望所有行都被过滤掉。但目前只有第一行被过滤掉,因为它的值为 value1。
我试过类似的东西
val filter = x.filter(row => (set contains row.value))
这将过滤掉具有特定值的所有行,但将具有相同 ID 的其他行保留在 RDD 中。
最佳答案
您必须为每个 rdd 行应用一个过滤函数,并且 =>
之后的函数应该将该行包含为数组,无论它是否包含该标记 idx 或其他内容。您可能需要调整 token 的数量,但它应该看起来像这样(您是否应该使用 contains 或不包含取决于您是要过滤还是过滤掉:
val filteredRDD = rawRDD
.filter(rowItem => !(rowItem.map(_.toString).toSeq
.contains(rowItem.(0).toString)))
或者甚至是这样的:
val filteredRDD = rdd1.rawRDD(rowItem => !(rowItem._2 contains rowItem._1))
关于apache-spark - Spark : filter out all rows based on key/value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42452959/