【问题标题】:Apache Spark difference between two RDDs两个 RDD 之间的 Apache Spark 区别
【发布时间】:2015-07-08 03:36:36
【问题描述】:

假设我有这个示例作业(在带有 Java API 的 Groovy 中):

def set1 = []
def set2 = []
0.upto(10) { set1 << it }
8.upto(20) { set2 << it }
def rdd1 = context.parallelize(set1)
def rdd2 = context.parallelize(set2)

//What next?

如何获得两者之间的差集?我知道union 可以创建一个 RDD,其中包含这些 RDD 中的所有数据,但是我该如何做相反的事情呢?

【问题讨论】:

    标签: groovy apache-spark


    【解决方案1】:

    如果您只想要一组减法subtract 将是一个答案。如果您想要“外部”集合,请尝试:

    rdd1.subtract(rdd2).union(rdd2.subtract(rdd1))
    

    【讨论】:

      【解决方案2】:

      我假设您正在寻找这样的东西:

      rdd1 = A, B
      rdd2 = B, C
      

      您要查找的结果是A, C?

      一个简单的方法是:

      rdd1.union(rdd2).subtract(rdd1.intersection(rdd2))
      

      【讨论】:

      • 这将导致一个空集合...,不是吗?
      • 你是对的 - 我的意思是交集而不是联合,请参阅编辑:)
      猜你喜欢
      • 2015-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-05
      • 2016-05-30
      • 2017-01-31
      • 2021-11-19
      • 2016-08-01
      相关资源
      最近更新 更多