如何调试spark dropduplicate和join函数调用?

有些表具有重复的行。我正在尝试减少重复项并保留最新的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。可能是什么原因?

如何调试这种情况?

robber_k 回答:如何调试spark dropduplicate和join函数调用?

在执行删除重复之后,请使用原始数据帧对此数据帧进行例外处理,这应该使您对另外要删除的行有所了解。对于那些被视为重复的列,很可能存在某些null或空值。

本文链接:https://www.f2er.com/3161526.html

大家都在问