Как отладить искры dropduplicate и присоединить вызовы функций? - PullRequest
0 голосов
/ 05 ноября 2019

Есть таблица с дублированными строками. Я пытаюсь уменьшить дубликаты и остаться с последним my_date (если есть строки с одинаковым my_date, не имеет значения, какой из них использовать)

val dataFrame = readCsv()
  .dropDuplicates("my_id", "my_date")
  .withColumn("my_date_int", $"my_date".cast("bigint"))

import org.apache.spark.sql.functions.{min, max, grouping}

val aggregated = dataFrame
    .groupBy(dataFrame("my_id").alias("g_my_id"))
  .agg(max(dataFrame("my_date_int")).alias("g_my_date_int"))

val output = dataFrame.join(aggregated, dataFrame("my_id") === aggregated("g_my_id") && dataFrame("my_date_int") === aggregated("g_my_date_int"))
    .drop("g_my_id", "g_my_date_int")

Но после этого кода я, когда захватить distinct my_id Я получаю примерно 3000 меньше, чем в исходной таблице. В чем может быть причина?

как отладить эту ситуацию?

1 Ответ

0 голосов
/ 05 ноября 2019

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...