Сравнение парных RDD-кортежей - PullRequest
0 голосов
/ 13 октября 2018

Я изучаю, как использовать 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).

Мне нужно создать СДР, который имеет один или другой, но не оба.Таким образом, результат, как только это будет сделано, будет выглядеть примерно так:

12 13
13 14
15 16
16 17

Единственный способ, которым я могу видеть это на данный момент, заключается в том, что мне нужно взять один кортеж и сравнить его с остальными вСДР, чтобы удостовериться, что это не те же самые данные, которые только что поменялись местами.

1 Ответ

0 голосов
/ 13 октября 2018

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

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