Сравнение парных 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, чтобы удостовериться, что это не те же самые данные, которые только что поменялись местами.

1 ответ

Решение

Числа просто необходимо отсортировать перед созданием кортежа.

val myRdd = sc.textFile(args(0))
  .map(line => {
    val nums = line.split("\\s+").sorted
    (nums(0), nums(1))
  }).distinct
Другие вопросы по тегам