Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 组合器中映射器输出加倍_Java_Hadoop_Mapreduce_Combiners - Fatal编程技术网

Java 组合器中映射器输出加倍

Java 组合器中映射器输出加倍,java,hadoop,mapreduce,combiners,Java,Hadoop,Mapreduce,Combiners,映射器仅输出一次值。但是当我检查组合器时,它有两次值。这对我来说真的很奇怪 请帮忙 从中发送输出的映射代码模块: for(int i = 0; i<alcmapi.size(); i++) { int section = 0; for(int j = 0; j<alcmapj.size(); j++) { if(!alcmapi.get(i).getid().equals(alcmapj.get(j).getid())) {

映射器仅输出一次值。但是当我检查组合器时,它有两次值。这对我来说真的很奇怪

请帮忙

从中发送输出的映射代码模块:

for(int i = 0; i<alcmapi.size(); i++)
{
    int section = 0;

    for(int j = 0; j<alcmapj.size(); j++)
    {
        if(!alcmapi.get(i).getid().equals(alcmapj.get(j).getid()))
        {
            int fi = Integer.parseInt(alcmapi.get(i).getField());
            int fj = Integer.parseInt(alcmapj.get(j).getField());

            ArrayList<CustomMap> al = new ArrayList<CustomMap>();
            al.add(new CustomMap(alcmapi.get(i).getid(), fi));
            al.add(new CustomMap(alcmapj.get(j).getid(), fj));


            if(fi<fj)
            {
                section = fi;
            }
            else
            {
                section = fj;
            }
            Collections.sort(al);
            {
                output.collect(new Text(t+" "+al.get(0).getid()), new Text(al.get(1).getid()+"  "+section));         

            }
        }
    }
}

提前谢谢

看起来像是针对所有其他元素测试所有元素。例如,如果元素3和5满足条件,那么您将写出一次i=3,j=5的配对,然后再次写出i=5,j=3的配对

我建议您将内部循环更改为:

for(int j = i+1; j<alcmapj.size(); j++)

for(int j=i+1;j表达式
t+“”+al.get(0).getid()
不依赖于循环索引
j
,因此它将为内部循环的每次迭代输出。i依赖于我的内部循环:检查行:ArrayList al=new arrarylist();al.add(new CustomMap(alcmap.get(i).getid(),fi));al.add(新自定义地图(alcmapj.get(j.getid(),fj));请帮助解决此问题
for(int j = i+1; j<alcmapj.size(); j++)