使用Apache Spark从大型数据集中查找重复数据



假设我们有一个大的csv/excel文件,其中有大量针对以下字段的记录。

1.Email 
2.First Name 
3.Last Name
4.Phone Number etc.

在这些记录中,我们需要根据电子邮件、名字和姓氏的匹配条件来识别重复记录。

对于重复计算,定义了一些自定义规则,根据单个记录进行评分。

例如,

1.If email is exact match then score is 100,else 0.
2.For First Name,Last Name etc. the edit distance is the score.

例如,假设搜索参数如下

Email:xyz@gmail.com,First Name: ABCD,Last Name:EFGH

行/记录类似

1.Email:xyz@gmail.com,First Name: ABC,Last Name:EFGH
2.Email:123xyz@gmail.com,First Name: ABC,Last Name:EFGH

对于记录1,分数=100(电子邮件)+75(名字)+100(姓氏)=275,即91.6%

对于记录2,分数=0(电子邮件)+75(名字)+100(姓氏)=175,即58%

重复检测阈值为75%,因此记录1是重复的,而记录2不是。当我们有输入参数并使用它们来确定文件中的重复项时,实现起来相当简单。

但是,当我们在一个文件中有所有记录,并且对于所有记录,我们需要找出哪些是重复的记录时,如何应用这种逻辑

这里没有定义输入参数,我们需要将一个记录与所有其他记录进行比较,以找到评分相关性。

如何在Apache Spark中实现这一点

将数据加载到spark中,并通过电子邮件列应用组。。之后检查行李,并在名字和姓氏列上应用任何距离算法。这应该是非常直接的火花

val df = sc.textFile("hdfs path of data");
df.mapToPair("email", <whole_record>)
.groupBy(//will be done based on key)
.map(//will run on each bag )

相关内容

  • 没有找到相关文章

最新更新