Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.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映射reduce-reduce中的计数属性_Java_Apache_Hadoop_Count_Mapreduce - Fatal编程技术网

Java映射reduce-reduce中的计数属性

Java映射reduce-reduce中的计数属性,java,apache,hadoop,count,mapreduce,Java,Apache,Hadoop,Count,Mapreduce,我正在做地图缩小。我有两个数据集。我必须根据一个ID将这两种方法结合起来,并分别计算每个上下文中ID出现的次数。例如,如果它列出了在几个州运营的旅行社的数据,我需要的输出格式是:用户ID-纽约的访问次数计数,IL的访问次数计数。该数据集包含字段状态:“NY”。我有一组预定义的状态ny,IL 虽然有数据,但在减少它时,我总是将计数设为零。 我的输出是所有ID的UID 0。 下面是我的代码: `import java.io.IOException; import java.util.*; impo

我正在做地图缩小。我有两个数据集。我必须根据一个ID将这两种方法结合起来,并分别计算每个上下文中ID出现的次数。例如,如果它列出了在几个州运营的旅行社的数据,我需要的输出格式是:用户ID-纽约的访问次数计数,IL的访问次数计数。该数据集包含字段状态:“NY”。我有一组预定义的状态ny,IL

虽然有数据,但在减少它时,我总是将计数设为零。 我的输出是所有ID的UID 0。 下面是我的代码:

`import java.io.IOException;
import java.util.*;

import org.apache.hadoop.conf.*;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.*;
import org.apache.hadoop.mapred.*;


public class myMap {
    /* Map*/
     public static class Map extends MapReduceBase implements Mapper<LongWritable, Text, Text, Text> {
         public void map(LongWritable key, Text value, OutputCollector<Text, Text> output, Reporter reporter) throws IOException {
             String line = value.toString();
             StringTokenizer tokens = new StringTokenizer(line, ",");
             Boolean eventFlag = false;
             String UID = "", state = "";

             while (tokens.hasMoreTokens()) {
                 String currToken = tokens.nextToken();
                 String[] keyValue = currToken.split(":");

                 if (keyValue[0].equals( "state")) {
                         state = keyValue[1].trim();

                 }
                 if (keyValue[0].equalsIgnoreCase( "user")) {
                     UID = keyValue[1];
                 }

             }

                 output.collect(new Text(UID), new Text(state));
         }
     }

     /* Reducer*/
     public static class Reduce extends MapReduceBase implements Reducer<Text, Text, Text,Text> {
        public void reduce(Text key, Iterator<Text> values, OutputCollector<Text, Text> output, Reporter reporter) throws IOException {
            int nyCnt = 0;
            int ilCnt = 0;
            String currValue = new String();
            while (values.hasNext()) {
                currValue = values.next().toString();
                if (currValue.equalsIgnoreCase("NY")) {
                    nyCnt+=1;
                }
                if (currValue.equalsIgnoreCase("IL")) {
                    ilCnt+=1;
                }
                output.collect(key , new Text(currValue));

            }
            String counts = Integer.toString(nyCnt) + " " + Integer.toString(ilCnt);
             output.collect(key, new Text(counts) );    
        }
     }

    public static void main(String[] args) throws Exception {
        JobConf conf = new JobConf(myMap.class);
        conf.setJobName("myMap");
        conf.setJarByClass(myMap.class);

        conf.setMapperClass(Map.class);
        conf.setCombinerClass(Reduce.class);
        conf.setReducerClass(Reduce.class);

        conf.setMapOutputKeyClass(Text.class);
        conf.setMapOutputValueClass(Text.class);

        conf.setOutputKeyClass(Text.class);
        conf.setOutputValueClass(Text.class);

        FileInputFormat.setInputPaths(conf, new Path(args[0]));
        FileOutputFormat.setOutputPath(conf, new Path(args[1]));


        JobClient.runJob(conf);

    }
}


`

任何关于错误的帮助都是有用的。多谢各位

你能发布你的输入文件吗?数据文件不能在互联网上共享。更详细的格式-有一个文件userData.txt,它有UID:xxxx;另一个文件tourData.txt的UID:xxxx,state:NY。输出所需id UID number\u的\u次\u次\u次\u次\u用户\u次\u次\u次