gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 15:56:29 24 4
gpt4 key购买 nike

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

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

(负面评论.txt)评论编号 1:电影糟透了,我看了细节, Action 刚刚好。评论编号 2...评论 id 3...等等。

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

  • 在: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.txtnegReviews.txt .

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

    3) 所以,从这个 MapReduce,你会得到两个文件 pos.txtneg.txt

    4) 现在,PosNeg.java并使用这个pom.xml使用 Maven 构建单个 jar。 Setup Maven for windows .使用 Netbeans 顺利完成任务(在设置项目时查看包名称、GroupID 和其他内容)。

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

    试试这个,让我知道。

    关于java - 如何制作两个文件的学习列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43014678/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com