Сравнение парных 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