2012-10-31 33 views
0

我有两个文件,如下所示。如何计算Hadoop的不同集合

对文件A

AA 
BB 
CC 
DD 
EE 
FF 

文件B

BB 
CC 
DD 
UU 
VV 

我的工作是找到那些出现在文件B的话,而不是在文件答:您可以把文件B仅一个文件,但文件A是一堆文件。

以下是我正在做的事情。

在地图阶段:

emit(word,filename) 

为了简化阶段:

检查的话,

if COUNT(values)>1: 
    ignore it. 
if COUNT(values)==1 and filename != A: 
    ignore it. 
emit(word) 

你有什么更好的解决办法?

UPDATE

有在一个文件中没有重复的条目。

最好的问候,

回答

0

您的解决方案存在问题。

if COUNT(values)>1: 
    ignore it. 
for file A 

AA 
BB 
CC 
DD 
EE 
FF 
for file B 

BB 
CC 
DD 
UU 
VV 
VV 

因此VV将不会在ans中出现错误。


(其他城市)答:

减少:

if(value.contains(FileName A) && value.contains(FileName B)) 
    ignore; 
else if (value.contains(FileName A) && !value.contains(FileName B)) 
ignore; 
else 
emit(key) 

+0

有,其中有一个文件中没有duplidate进入这些文件的策略。这意味着你的文件B是无效的 –

+0

好吧。因为它没有在qus中提到,所以我ansed它的通用文件 –