配对RDD元组比较

时间:2018-10-13 04:41:54

标签: eclipse scala apache-spark rdd spark-shell

我正在学习如何使用spark和scala,并且试图编写一个scala spark程序来接收和输入字符串值,例如:

12 13
13 14
13 12
15 16
16 17
17 16

我最初使用以下命令创建rdd:

val myRdd = sc.textFile(args(0)).map(line=>(line.split("\\s+"))(0),line.split("\\s+")(1))).distinct()

现在这就是我被困住的地方。在一组值中,有一些实例,如(12,13)和(13,12)。在数据的上下文中,这两个是相同的实例。简单地说(a,b)=(b,a)。

我需要创建一个具有一个或另一个但没有两个都有的RDD。因此,一旦完成,结果将类似于以下内容:

12 13
13 14
15 16
16 17

到目前为止,我唯一能看到它的方法是,我需要取一个元组并将其与RDD中的其余元组进行比较,以确保不是刚刚交换的相同数据。

1 个答案:

答案 0 :(得分:2)

只需要在创建元组之前对数字进行排序。

val myRdd = sc.textFile(args(0))
  .map(line => {
    val nums = line.split("\\s+").sorted
    (nums(0), nums(1))
  }).distinct