Mapper 中的条件语句

来源:4-9 词频统计之通过Debug方式进一步了解偏移量以及重构代码

Stefan章晓风

2021-02-24

老师你好,
请问在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回答

Michael_PK

2021-02-24

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

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

0
3
Michael_PK
回复
Stefan章晓风
javase的基础不够扎实啊,java中判断字符串是否相等能直接用=吗?是用equals吧
2021-02-25
共3条回复

Hadoop 系统入门+核心精讲

从Hadoop核心技术入手,掌握数据处理中ETL应用,轻松进军大数据

2397 学习 · 902 问题

查看课程