С помощью RDD можно решить путем сравнения элементов:
val data = List(
("a", "b"),
("c", "d"),
("a", "b"),
("a", "b"),
("d", "c"),
("b", "a"),
("e", "f"),
("g", "h"))
val original = sparkContext.parallelize(data)
val converted = original.map(v => if (v._1 < v._2) (v._1, v._2) else (v._2, v._1))
println("-- converted -- ")
converted.foreach(println)
println("-- result --")
converted.distinct().foreach(println)
Вывод:
-- converted --
(c,d)
(a,b)
(a,b)
(c,d)
(e,f)
(a,b)
(g,h)
(a,b)
-- result --
(e,f)
(a,b)
(g,h)
(c,d)