如何制作两个文件的学习列表

How to make a learning list of two files

你好,我想在 hadoop 中制作一个学习列表,这样如果我有两个文件示例:positivereview.txt 和 negativereview.txt 并且每个文本都有以下评论:

(positivereview.txt) 评论编号 1:电影看起来很酷,我真的很喜欢它,尤其是动作部分。 评论编号 2... 评价 id 3...等...

(negativereview.txt) 评论编号 1:电影糟透了,我看了细节,动作刚刚好。 评论编号 2... 评价 id 3...等...

我想开发的程序的输出应该是这样的(一个文件中的两个 txt 文件的结果):

  • in:2p/2n
  • 上午:7 点/3 点
  • 电影:5p/2n
  • 即:8p/9n
  • (p - positivereview.txt
    n- negaivereivew.txt)

    我在 hadoop-mapreduce-examples-2.7.3.jar 上使用这个 wordcount java 程序,但它只会计算两个文档中的所有单词,而不是像我想要的那样分开..

    我应该如何构建它,是否可以修改 hadoop-mapreduce-examples-2.7。3.jar(来自 hadoop 包含的库..)所以我可以做到这一点

    谢谢

    假设您从 运行 pos.txt 和 neg.txt.

    上的 WordCount 程序获得了两个输出文件

    我假设输出文件结构是这样的

    在 2

    电影 3

    那个6

    ...

    你需要再写一个MapReduce程序(输入作为之前MapReduce的输出目录)键值对应该是这样的

    更新:

       class PosNegMapper extends Mapper<LongWritable, Text, Text, IntWritable> {
    
        @Override
        public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
            String s_arr[] = value.toString().split("\s");
            int val = Integer.parseInt(s_arr[1]);
            context.write(new Text(s_arr[0]), new IntWritable(val));
        }
    
    }
    
    class PosNegReducer extends Reducer<Text, IntWritable, Text, Text> {
    
        @Override
        public void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException {
          ArrayList<IntWritable> arls = new ArrayList<>();
          for( IntWritable val : values){
             arls.add(val);
          }
          if(arls.size()<2)
              arls.add(new IntWritable(0));
          String s = arls.get(0) + "p/" + arls.get(1) + "n" + System.getProperty("line.separator"); //Here, I took liberty that the word must be in both files.
          Text result=new Text(s);
          context.write(key, result);
        }
    
    }
    

    更新 1:

    我想我误会了什么。所以,从第一步开始看。

    1) 初始文件为 posReviews.txt and negReviews.txt.

    2) 所以,现在 运行 WordCount MapReduce 在这两个文件上。(处理像这样的情况 标点符号、大小写字母等)

    3) 因此,从这个 MapReduce 中,您将得到两个文件 pos.txt and neg.txt

    4) 现在,PosNeg.java & use this pom.xml to build single jar using maven. Setup Maven for windows。使用 Netbeans 顺利完成任务(在设置项目时查看包名称、GroupID 和其他内容)。

    5) 您将得到一个 jar,其中包含名称为 "PosNeg-1.0-SNAPSHOT-jar-with-dependencies" 的所有必需文件。 运行 这个 jar 使用命令 "hadoop jar .../PosNeg-1.0-SNAPSHOT-jar-with-dependencies.jar com.ga.posneg.PosNeg input_dir output_dir"

    试试这个然后告诉我。