Удаление дубликатов из кортежа Dateset в Spark - PullRequest
0 голосов
/ 17 января 2019

У меня проблемы с отбрасыванием дублирующихся строк в наборе кортежей данных Dataset[(LeftDs, RightDs)]

Попытка объединить два набора данных, как это:

val comparableDs = leftDs.joinWith(
   rightDs,
   fuzzyMatch(leftDs.col("name"), rightDs.col("officialName"))
)

Я хочу удалить дубликаты для двух полей:

val resultDs = comparableDs.dropDuplicates("_1.name", "_2.officialName")

Но получаю эту ошибку: Cannot resolve column name "_1.name" among (_1, _2);

Это схема comparableDs:

root
 |-- _1: struct (nullable = false)
 |    |-- id: string (nullable = true)
 |    |-- name: string (nullable = true)
 |-- _2: struct (nullable = false)
 |    |-- id: string (nullable = true)
 |    |-- category: string (nullable = true)
 |    |-- officialName: string (nullable = true)

Как записать параметры столбца в метод dropDuplicates для этой схемы?

1 Ответ

0 голосов
/ 17 января 2019

После того, как вы используете joinWith, полученный вами фрейм данных имеет только два столбца. А Spark не поддерживает удаление дубликатов для вложенного столбца.

Вы можете использовать объединение, чтобы сгладить столбцы, вместо joinWith, для которого вы можете указать столбец, для которого вы хотите dropDuplicates.

...