hadoop mapreduce编程if条件

avwztpqn  于 2021-05-29  发布在  Hadoop
关注(0)|答案(2)|浏览(297)

我已经写了下面的代码,这是不比较,如果块它继续进入else块。请检查一下,有没有不符之处。
请帮忙

public class ReduceIncurance extends Reducer<Text, Text, Text, IntWritable> {
    public void reduce(Text key, Iterable<Text> values, Context context)
            throws IOException, InterruptedException

    {

        int sum = 0;
        int count = 0;
        String[] input = values.toString().split(",");

        for (String val : input) {
            System.out.println("first:" + val);
            if (val.equalsIgnoreCase("Residential")) {
                System.out.println(val);
                count++;
                sum += count;
            } else {
                System.out.println("into elsee part");
                count++;
                sum += count;
            }

            context.write(key, new IntWritable(sum));
        }

    }

}
jdzmm42g

jdzmm42g1#

试试这个

public void reduce(Text key, Iterable<Text> values , Context context) throws IOException, InterruptedException
{
    int count=0;

    for (Text val : values)
    {
        if (val.toString().equalsIgnoreCase("Residential"))
        {
            count ++;
        }
        else
        {
            System.out.println("into elsee part");
        }
    }
    context.write(key, new IntWritable(count));
}

这将为您提供每个键下的“住宅”值计数。
问题在此代码中 String[] input = values.toString().split(","); . Iterable<Text> 无法转换为 String[] 这样地。

kupeojn6

kupeojn62#

对于特定的键,您需要遍历这些值。您不需要将它们存储到字符串[]。
试试这个

public class ReduceIncurance extends Reducer<Text, Text, Text, IntWritable> {
 public void reduce(Text key, Iterable<Text> values, Context context)
        throws IOException, InterruptedException
 {

    int sum = 0;
    int count = 0;
    for (Text val : values) {
        String[] input = val.toString().split(",");
        for (int i = 0; i < input.length; i++) {
        if (input[i].equalsIgnoreCase("Residential")) {
            System.out.println(val);
            count++;
            sum += count;
        } else {
            System.out.println("into elsee part");
            count++;
            sum += count;
        }
       }
     context.write(key, new IntWritable(sum));
   }
 }
}

我还是不明白你为什么在if和else块中增加sum和count。

相关问题