как сравнивать строки и определять повторяющиеся значения в столбце, группируя другие столбцы в scala кирпичи данных - PullRequest
0 голосов
/ 27 февраля 2019

enter image description here

Я хочу идентифицировать желтые строки, потому что они имеют одинаковую дату и принадлежат одному и тому же идентификатору группы и одному и тому же идентификатору1.Зеленые - правильные, потому что они принадлежат другому groupid и другому идентификатору1.

1 Ответ

0 голосов
/ 27 февраля 2019

Scala имеет функцию dropDuplicates для удаления дубликатов на основе предоставленных вами столбцов.Простой пример:

import org.apache.spark.sql.functions._

val df = Seq (
  ( 1, 1, 1234, "12010", "null"   ),
  ( 1, 2, 1234, "22201", "null"   ),
  ( 2, 1, 2345, "12011", "null"   ),
  ( 2, 2, 2345, "12011", "null"   ),
  ( 2, 3, 2345, "32011", "yellow" ),
  ( 2, 4, 2345, "32011", "yellow" ),
  ( 3, 1, 3456, "4012   ", "null"   ),
  ( 3, 2, 3456, "52012", "green"  ),
  ( 4, 1, 4567, "52012", "green"  ),
  ( 4, 2, 4567, "52013", "null"   )
)
  .toDF( "identifier1", "identifier2", "groupid", "date", "colour" )

//df.show

// Drop the duplicates based on date and identifier1 columns
df
  .dropDuplicates(Seq("date", "identifier1"))
  .show

Мои результаты:

results

Я бы сказал, что из вашего примера не совсем ясно, что именнотребуется, но, надеюсь, это окажется полезной отправной точкой.Подробнее о dropDuplicates здесь .

...