Skip to main content
 首页 » 编程设计

eclipse中对 RDD 元组比较

2025年12月25日23dflying

我正在学习如何使用 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