Искра <2.0 </h2>
Рассмотрим distinct
в наборе данных со столбцом (столбцами) для удаления дубликатов с последующим внутренним соединением в столбце (столбцах).
// don't use distinct yet
val filtergroup = metric
.join(filtercndtns, Seq("aggrgn_filter_group_id"), "inner")
// take unique aggrgn_filter_group_ids
val uniqueFilterGroups = filtergroup
.select("aggrgn_filter_group_id")
.distinct
// Inner join to remove duplicates from the source dataset
filtergroup.join(uniqueFilterGroups, Seq("aggrgn_filter_group_id"), "inner")
Цена за выполнение дополнительных select
с distinct
и join
, но должна дать вам ожидаемый результат.
Искра> = 2,0
Следующее решение будет работать только с Spark 2.0 + , который вышел с поддержкой операторов dropDuplicates
и позволяет отбрасывать дубликаты, учитывая только подмножество столбцов.
Цитирование документации :
друг (): набор данных [T]
Возвращает новый набор данных, который содержит только уникальные строки из этого набора данных. Это псевдоним для dropDuplicates
.
distinct
или dropDuplicates
просто отбросьте дубликаты строк, сравнивая каждый столбец.
Если вас интересует конкретный столбец, вы должны использовать один из dropDuplicates
, например,
val filtergroup = metric
.join(filtercndtns, Seq("aggrgn_filter_group_id"), "inner")
.dropDuplicates("aggrgn_filter_group_id")
Когда вы указываете столбец или набор столбцов, dropDuplicates
возвращает новый набор данных с удаленными дублирующимися строками, учитывая только подмножество столбцов.