请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

Mapper 中的条件语句

老师你好,
请问在Mapper中可以使用条件语句吗?我想用if过滤一下条件, 然后把符合条件的的字符串放进上下文中, 这么做可以吗?我是这么写的:

public static class Task_A_Mapper extends Mapper<Object, Text, Text, Text>{

        public void map(Object key, Text value, Context context) throws IOException, InterruptedException {

            // Split value based on ','
            String[] words = value.toString().split(",");

            // Output (Name, Hobby) if found Nation == Romania
            if (words[2]=="Romania"){
                context.write(new Text(words[1]), new Text(words[4]));
            }
        }
    }

    public static class Task_A_Reducer extends Reducer<Text, Text, Text, Text>{

        public void reduce(Text key, Text values, Context context) throws IOException, InterruptedException {
            context.write(key, values);
        }
    }

    public static void main(String[] args) throws Exception {
        Configuration conf = new Configuration();
        Job job = Job.getInstance(conf, "Task_A");

        job.setJarByClass(Task_A.class);
        job.setMapperClass(Task_A_Mapper.class);
        job.setCombinerClass(Task_A_Reducer.class);
        job.setReducerClass(Task_A_Reducer.class);

        job.setMapOutputKeyClass(Text.class);
        job.setMapOutputValueClass(Text.class);
        job.setOutputKeyClass(Text.class);
        job.setOutputValueClass(Text.class);

        FileInputFormat.addInputPath(job, new Path("input/MyPage.csv"));
        FileOutputFormat.setOutputPath(job, new Path("output"));

        System.exit(job.waitForCompletion(true) ? 0 : 1);
    }

我读取的文件是csv, 所以用逗号分割,数据都长这个样子:
1,Norma Fisher,Romania,34,Watch Movies 等等
但是我在if后面上下文那里打断点, 并没有停下来诶, 这个程序可以跑, 但是最后结果是空的。

正在回答

1回答

过滤其实就是在map方法中使用if进行判断就可以的。

你在String[] words = value.toString().split(",");这一行加个断点,看看到底截取出来的东西是不是你想要的

0 回复 有任何疑惑可以回复我~
  • 提问者 Stefan章晓风 #1
    谢谢老师,加断点了,是我想要的,但是那个if判断还是没有进去...
    回复 有任何疑惑可以回复我~ 2021-02-25 03:29:48
  • 提问者 Stefan章晓风 #2
    非常感谢!
    回复 有任何疑惑可以回复我~ 2021-02-25 03:33:43
  • Michael_PK 回复 提问者 Stefan章晓风 #3
    javase的基础不够扎实啊,java中判断字符串是否相等能直接用=吗?是用equals吧
    回复 有任何疑惑可以回复我~ 2021-02-25 12:07:03
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信