spark 2.0.0 select 明显不稳定的结果

spark 2.0.0 select distinct unstable result

我 运行 pyspark2 超过 spark 2.0.0

考虑到加载到 Dataframe 中的稳定且恒定的数据集,我确实删除了某些列的重复项:

vw_ticket = read_csv(...)
vw_ticket_in_booking = vw_ticket.dropDuplicates(['BOOKING_TICKET_ID'])
vw_ticket_in_booking.createOrReplaceTempView('vw_ticket_in_booking')

然后

spark.sql('select count(distinct(booking_id)) from vw_ticket_in_booking t').show()

给出不可重复的结果,不同的个数字,但是

spark.sql('select count(distinct(booking_id)) from vw_ticket t').show()
spark.sql('select count(*) from vw_ticket t').show()
spark.sql('select count(*) from vw_ticket_in_booking t').show()

总是稳定的。可能是什么原因?

dropDuplicate 就像 groupBy 然后 first。在对值进行重复数据删除之前,将进行洗牌和写入以对值进行排序以对它们进行分组。 这将导致不同的行排在第一位。

如果您知道要保留哪一行值,您应该应用 window 函数来评估哪一行是第一行(sort 是不够的,因为有之后仍将是洗牌)。