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
是不够的,因为有之后仍将是洗牌)。
我 运行 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
是不够的,因为有之后仍将是洗牌)。