对 RDD 元组比较



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

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

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

最新更新