【问题标题】:Find an element in RDD Spark在 RDD Spark 中查找元素
【发布时间】:2016-03-03 16:37:53
【问题描述】:

有没有一种有效的方法可以在RDD 中找到特定元素,然后将其删除?

例如:

sc.parallelize(Array(Array(4,2,6),Array(2,5),Array(1, 2, 3), Array(1, 2, 6)))

RDD 中找到具有特定值的 Array(1,2,3) 并将其删除,这可能吗 提前致谢

【问题讨论】:

  • 我不明白,你应该解释一下。
  • 我已经更正了我的问题。更一般地说,我想找到一个元素并从 rdd 中删除
  • 从技术上讲,RDD 是不可变的,因此您无法从中删除任何内容。您可以根据没有元素的 RDD 创建一个新的 RDD。 @AlbertoBonsanto 已经回答了这个问题(除非您只想删除第一次出现的问题?)

标签: scala apache-spark rdd


【解决方案1】:

如果你想删除一行RDD,那么你应该使用RDDs中的filter方法,documentation声明:

返回一个仅包含满足谓词的元素的新 RDD。

这意味着所有记录都使用 lambda 中的表达式进行比较,如果它们满足条件,则保留它们,否则它们将从新的 RDD 中删除。

val xrdd = sc.parallelize(Array(Array(1, 2, 3), Array(1, 2, 6)))
xrdd.filter(_.sameElements(Array(1, 2, 3))).take(3)
// Array(Array(1, 2, 6))

【讨论】:

  • 它可能不是第一行。假设我们有数千条记录,我想找到特定的数组并将其删除。
  • @Nick 你需要一个更好的例子......我仍然没有得到你想要的
  • @Nick 他发布的代码不会过滤掉第一行,它会检查 每个 元素并过滤掉等于 Array(1,2,3) 的元素
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-06
  • 1970-01-01
  • 2016-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多