0

以下のような2つのファイルがあります。

ファイル A の場合

AA
BB
CC
DD
EE
FF

ファイル B の場合

BB
CC
DD
UU
VV

私の仕事は、ファイル B には現れるが、ファイル A には現れない単語を見つけることです。

以下は私がやっていることです。

マップ フェーズの場合:

emit(word,filename)

リデュース フェーズの場合:

単語を確認し、

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

より良い解決策はありますか?

アップデート

1 つのファイルに重複するエントリはありません。

よろしくお願いします、

4

1 に答える 1

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)

于 2012-10-31T06:29:29.937 に答える