Algorithm 比较两个大型电子邮件地址列表的最佳方法或算法是什么?

Algorithm 比较两个大型电子邮件地址列表的最佳方法或算法是什么?,algorithm,hadoop,Algorithm,Hadoop,在短时间内比较两个大型电子邮件地址列表的最佳方法或算法是什么 其思想是检测列表B中可以找到的尽可能多的地址 名单不相等。 我尝试了模糊校验和,但只有当列表大小相等时(在我的例子中,列表不相等),它才是好的 我认为这是一个Hadoop解决方案,但不幸的是,我是Hadoop的初学者。有人有什么想法、例子、解决方案和教程吗 谢谢这对你有用吗?应该是O(n) 它的好处是既给你交叉点,又给你差异。它可以扩展以跟踪任意数量列表之间的差异。这对您有用吗?应该是O(n) 它的好处是既给你交叉点,又给你差异。它可

在短时间内比较两个大型电子邮件地址列表的最佳方法或算法是什么

其思想是检测列表B中可以找到的尽可能多的地址

名单不相等。 我尝试了模糊校验和,但只有当列表大小相等时(在我的例子中,列表不相等),它才是好的

我认为这是一个Hadoop解决方案,但不幸的是,我是Hadoop的初学者。有人有什么想法、例子、解决方案和教程吗


谢谢

这对你有用吗?应该是O(n)


它的好处是既给你交叉点,又给你差异。它可以扩展以跟踪任意数量列表之间的差异。

这对您有用吗?应该是O(n)


它的好处是既给你交叉点,又给你差异。它可以扩展以跟踪任意数量列表之间的差异。

如果将每个列表视为一个集合,则公共地址由集合表示。“唯一”地址(仅出现在一个地址中)表示为:

set1 U set2 \ (set1 [intersection] set2)
它可以在所有高级语言(如java)中轻松完成,例如,看看apache

如果列表不是太大(适合内存),则可以在内存中执行以下操作(java代码):

//前两行仅用于测试,不是算法的一部分:
列表l1=Arrays.asList(新字符串[]{”a@b.com", "1@2.com"} );
列表l2=数组.asList(新字符串[]{”1@2.com", "asd@f.com", "qwer@ty.com"} );
Set s1=新哈希集(l1);
for(字符串s:l2){
如果(s1.包含)系统输出打印项次;
}
如果您想使用hadoop,可以通过以下方式实现常见邮件:

map(set):
   for each mail in list:
         emit(mail,'1')
reduce(mail,list<1>):
    if size(list) > 1:
       emit(mail)
map(集合):
对于每个邮件输入列表:
发出(邮件,'1')
减少(邮件、列表):
如果尺寸(列表)>1:
发出(邮件)

通过在两个集合上调用map,并在mapper的输出上减少,您将获得公共元素。

如果您将每个列表视为一个集合,则公共地址由集合表示。“唯一”地址(仅出现在一个地址中)表示为:

set1 U set2 \ (set1 [intersection] set2)
它可以在所有高级语言(如java)中轻松完成,例如,看看apache

如果列表不是太大(适合内存),则可以在内存中执行以下操作(java代码):

//前两行仅用于测试,不是算法的一部分:
列表l1=Arrays.asList(新字符串[]{”a@b.com", "1@2.com"} );
列表l2=数组.asList(新字符串[]{”1@2.com", "asd@f.com", "qwer@ty.com"} );
Set s1=新哈希集(l1);
for(字符串s:l2){
如果(s1.包含)系统输出打印项次;
}
如果您想使用hadoop,可以通过以下方式实现常见邮件:

map(set):
   for each mail in list:
         emit(mail,'1')
reduce(mail,list<1>):
    if size(list) > 1:
       emit(mail)
map(集合):
对于每个邮件输入列表:
发出(邮件,'1')
减少(邮件、列表):
如果尺寸(列表)>1:
发出(邮件)

通过在两个集合上调用map,并减少mapper的输出,您将获得公共元素。

我们所说的列表有多大?比主存储器大?大于谁的散列可以存储在主内存中?大于磁盘的列表可以有几百万个地址。它们不会比主备忘录中存储的容量大,但实际上它并没有那么大。列表是否有序?您希望输出是什么?区别是什么?相等?列表是不排序的(但第一步是对它们排序),结果将是哪些地址相同(相等),或者百分比,在列表B中找到列表a的百分比,我们所说的列表有多大?比主存储器大?大于谁的散列可以存储在主内存中?大于磁盘的列表可以有几百万个地址。它们不会比主备忘录中存储的容量大,但实际上它并没有那么大。列表是否有序?您希望输出是什么?区别是什么?相等?列表没有排序(但第一步是对它们排序),结果将是哪些地址相同(相等),或者百分比,列表a在列表B中的百分比。谢谢,我将尝试两种解决方案。谢谢,我将尝试这两种解决方案。谢谢,我将尝试此解决方案我稍微改变了逻辑,因为我发现了一个问题。谢谢,我会尝试这个解决方案。我稍微改变了逻辑,因为我发现了一个问题。