hadoop中用于搜索的mapper程序说明

hadoop中用于搜索的mapper程序说明,hadoop,Hadoop,我是hadoop新手,所以我在理解程序方面有点困难。那么,如果有人能帮助我理解这个映射程序 package SearchTxn; import java.io.IOException; import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.NullWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Map

我是hadoop新手,所以我在理解程序方面有点困难。那么,如果有人能帮助我理解这个映射程序

package SearchTxn;

import java.io.IOException;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.NullWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;

public class MyMap extends Mapper<LongWritable, Text, NullWritable, Text>{

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

            String Txn = value.toString();
            String TxnParts[] = Txn.split(",");
            Double Amt = Double.parseDouble(TxnParts[3]);
            String Uid = TxnParts[2];           
            if(Uid.equals("4000010") && Amt>100)
            {
                context.write(null, value); 
            }           
        }
    }
包搜索txn;
导入java.io.IOException;
导入org.apache.hadoop.io.LongWritable;
导入org.apache.hadoop.io.NullWritable;
导入org.apache.hadoop.io.Text;
导入org.apache.hadoop.mapreduce.Mapper;
公共类MyMap扩展映射器{
公共void映射(LongWritable键、文本值、上下文上下文)引发IOException、InterruptedException{
字符串Txn=value.toString();
字符串txnpart[]=Txn.split(“,”);
Double Amt=Double.parseDouble(txnpart[3]);
字符串Uid=txnpart[2];
如果(Uid等于(“4000010”)&金额>100)
{
write(null,value);
}           
}
}

该代码基本上过滤
Uid
(csv中的第二列)为“4000010”且
Amt
(我猜对于金额,csv中的第三列)大于100的行

连同@Thomas Jungblut的答案,在你们程序的下面一行是关于Mapper类整体输入和输出的。这里没有任何内容作为
重新调谐,而是将文本作为
重新调谐

public class MyMap extends Mapper<LongWritable, Text, NullWritable, Text>{

从Mapper类编写序列化键并不总是必要的。根据您的用例,键或值或两者都可以写入
上下文。write
方法。

但是上下文的含义是什么。write(null,value);?因为当我们进行字数计算时,我们将IntWritable one=new IntWritable(1)Text outkey=new Text(word)稍后执行上下文。out(outkey,value),但在上面的代码中,我没有得到输出行(即上下文行)中发生的情况。@Kuldeepsing所以你应该在你的问题中包括这一点。当您使用
TextOutputFormat
时,将
null
写入为键会使格式只写入值,而没有键/值分隔符。这意味着我们将键视为null,将整行视为值?您的理解是正确的。不确定您的用例,但是如果您提取了一些不值钱的东西。然后你应该把它们从mapper发送出去。这里的值是经过验证后的进位转发。是的,这是一个用于搜索具有某些id和金额的特定记录的程序。该结果将输入减速器。所以,这里我们把key作为null,把一整行或者说row作为value?继续吧,如果你认为这个答案已经解决了或者正确地回答了你的问题。请单击答案旁边的复选标记,将其标记为已接受。见:?了解更多信息。
context.write(null, value);