У меня есть фрейм данных, который содержит дубликаты записей на основе столбца. Мое требование - удалить дубликаты на основе столбца и выполнить определенную операцию с уникальными записями. А также определите дублирующую запись на основе столбца и сохраните ее в hbase для целей аудита.
входной файл:
A,B
1,2
1,3
2,5
Dataset<Row> datasetWithDupes=session.read().option("header","true").csv("inputfile");
//drop dupliactes on column A
Dataset<Row> datasetWithoutDupes = datasetWithDupes.dropDuplicates("A")
Требуется набор данных с удаленной записью. Я пробовал 2 варианта
datasetWithDupes.withColumn("rank", functions.row_number().over(Window.partitionBy("A").seq()).orderBy("B").seq())))
затем фильтрация по рангу для получения дубликатов записей.
Есть ли более быстрый способ получения дублированных записей, потому что я использую его в потоковом приложении, и большая часть времени обработки (50%) истекает при поиске дублирующих записей и сохранении их в таблице hbase. У меня интервал пакетной обработки 10 секунд, и около 5 секунд тратится на фильтрацию дублирующихся записей.
Пожалуйста, предложите достичь быстрее.