Java 如何在for循环中的文本之间迭代,并在MapReduce()中查找特定文本的计数

Java 如何在for循环中的文本之间迭代,并在MapReduce()中查找特定文本的计数,java,hadoop,text,mapreduce,bigdata,Java,Hadoop,Text,Mapreduce,Bigdata,下面是一段特定数据集上的Reduce()代码,该数据集有一组指定为“key”的名称,以及将特定指定人员的工资指定为“value” public static class ReduceEmployee extends Reducer<Text, IntWritable, Text, IntWritable> { public void reduce(Text key, Iterable<IntWritable> values,

下面是一段特定数据集上的Reduce()代码,该数据集有一组指定为“key”的名称,以及将特定指定人员的工资指定为“value”

public static class ReduceEmployee extends
        Reducer<Text, IntWritable, Text, IntWritable> 
{
public void reduce(Text key, Iterable<IntWritable> values,
                   Context context) throws IOException, InterruptedException {
        int sum = 0; 
        for (IntWritable val : values) {
            sum += val.get();  
        }
        context.write(key, new IntWritable(sum));
    }
}        
公共静态类ReduceEmployee扩展
减速器
{
public void reduce(文本键、Iterable值、,
上下文)抛出IOException、InterruptedException{
整数和=0;
for(可写入值:值){
sum+=val.get();
}
write(key,newintwriteable(sum));
}
}        
如果我理解正确的话,它会有一个公共键(一组名称,如Manager,Steward,columnwise)和一组整数(palaries),作为columnwise给定的值,这些整数中的每一个都会被迭代并添加到0,以获得特定键的总薪资(将它们映射到类似的键后)

我得到了另一个数据集,其中有一组城市名称作为“关键”列,以及文本格式的区域类型(不像以前的数据集那样是整数),例如(住宅或木材等)列

public static class ReduceEmployee extends
            Reducer<Text, Text, Text, IntWritable> {


        public void reduce(Text key, Iterable<Text> values,
                           Context context) throws IOException, InterruptedException {
            int count = 0; 
            Text r; 
            for (Text val : values) {
                r = val.get(); 
                if (r=="Residential")
                {
                count++;
                }
            }
            context.write(key, new IntWritable(count));
        }
    }        
公共静态类ReduceEmployee扩展
减速器{
public void reduce(文本键、Iterable值、,
上下文)抛出IOException、InterruptedException{
整数计数=0;
文本r;
用于(文本值:值){
r=val.get();
if(r=“住宅”)
{
计数++;
}
}
write(key,newintwriteable(count));
}
}        

我想在Reduce()中实现的是,我想在所有这些文本值之间逐列迭代,扫描每个文本并检查它是否读作“驻留”,如果是,则增加计数。但是类型text的get()方法未定义。(我认为我可以很聪明,随意地用文本替换这个数据集的int)显然,我在这些文本列中迭代的知识非常少。有人能帮我解决这个问题,给我一个解决办法吗

试着用这个替换for循环

for (Text val : values) {
   if (val.toString().equals("Residential")){
        count++;
   }
}
由于您的值是文本,您需要使用等于来将其与“住宅”匹配。未为文本定义and.get()


希望这就是您所需要的

尝试用此替换for循环

for (Text val : values) {
   if (val.toString().equals("Residential")){
        count++;
   }
}
由于您的值是文本,您需要使用等于来将其与“住宅”匹配。未为文本定义and.get()


希望这就是您所需要的

您是否试图计算每把钥匙的“住宅”发生率?您是否试图计算每把钥匙的“住宅”发生率?