2

我正在学习如何使用 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 中的其余部分进行比较,以确保它不是刚刚交换的相同数据。

4

1 回答 1

2

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

val myRdd = sc.textFile(args(0))
  .map(line => {
    val nums = line.split("\\s+").sorted
    (nums(0), nums(1))
  }).distinct
于 2018-10-13T06:15:37.623 回答