удаление логических и прямых дубликатов в файле через spark sql и scala - PullRequest
0 голосов
/ 04 сентября 2018

рассмотреть текстовый файл с двумя столбцами

a,b
c,d
a,b
a,b
d,c
b,a
e,f
g,h

с помощью spark-sql и scala on spark мне нужно удалить логическое и прямые дубликаты. в приведенных выше данных для записи а, б прямой дубликат а, б логический дубликат b, a Я знаю, как удалить прямую копию, но я не знаю, как удалить логическую копию

Ответы [ 2 ]

0 голосов
/ 04 сентября 2018

Вы можете сделать как ниже, используя RDDs

val inpurRdd=sc.textFile("H://spark//input.txt")
inputRdd.map(_.split(",").sorted.mkString(",")).map(x=>x->1).groupByKey.map(_._1)
0 голосов
/ 04 сентября 2018

С помощью 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...