我的输入集如下: 1,abcd 2,acbd
我想找到诸如a-> b之类的关系,即b遵循a;(b-> c和c-> b)即b和c在两组中彼此遵循;和a!-> d,即在这两个集合中a和d都不跟随(“ follow”表示“立即跟随”)我的多阶段map-reduce函数如下:
Step1,Mapper1:键,值= 1,abcd Step1,Mapper2:kv = 2,acbd
Step1,Reducer1:每个可能的对的kv =,kv =,kv =,kv =等
Step1,Reducer2:kv =,kv =,kv =,kv = ...
我要做的是在用作密钥之前对对进行排序(即密钥将是bc而不是cb)。如果在集合中找不到该对,则值为0;如果找到该对,则值为1;如果找到相反的对,则值为2。
现在,Step2,Reducers,将获得这些排序对 Step2,Reducer1:ab:1,0 Step2,Reducer2:bc:1,2 Step2,Reducer3:广告:0,0 ...
如果我看到1,0或0,1或1,1,则表示->。 如果我看到1,2或2,1,则意味着两种关系都成立 如果我看到0,0,则表示没有关系。
这看起来正确吗? (从经验上讲,这似乎不错)
谢谢。