我正在通过spark 2.0.0
运行pyspark2考虑加载到数据框中的稳定且恒定的数据集,我确实会通过某些列删除重复:
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
。将会有一个混音,并写入对值进行分类,然后再重复编写它们。这将导致不同的线路首先。
如果您想知道要保留哪个线路值,则应应用窗口函数来评估第一个行(sort
是不够的,因为之后仍然会有随机混音)。