spark结构化流处理中,如何处理数据的去重?

提问者:帅平 问题分类:大数据
在spark结构化流处理过程中,由于各种原因,我们可能会向消息队列里面发送重复的数据,此时我们不希望spark结构化流计算的时候重复计算这些数据,因为再把这些数据纳入计算的话,则会出现结果不准确的情况。因此如何去重呢?

 您阅读本篇文章共花了: 

1 个回答
赤脚踏两船
赤脚踏两船
去重的话,可以直接使用spark的dropDuplicates函数,这个函数可以根据多个字段的组合来进行去重,使用语法是:
df.drop_duplicates(subset=['A','B'],keep='first',inplace=True)

主要参数:
subset: 输入要进行去重的列名,默认为None
keep: 可选参数有三个:‘first’、 ‘last’、 False, 默认值 ‘first’。其中,
first表示: 保留第一次出现的重复行,删除后面的重复行。
last表示: 删除重复项,保留最后一次出现。
False表示: 删除所有重复项。
inplace:布尔值,默认为False,是否直接在原数据上删除重复项或删除重复项后返回副本。
实际演示如下:
val windowCountDupDF = mobileDupSSDF.withWatermark("ts", "10 minutes").dropDuplicates("id", "ts").groupBy("id").count
发布于:1年前 (2022-12-15) IP属地:四川省
我来回答