用于搜索hadoop的映射器程序的说明

时间:2016-06-10 19:52:27

标签: 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.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); 
            }           
        }
    }

2 个答案:

答案 0 :(得分:1)

代码基本上过滤了Uid(csv中的第二列)为“4000010”和Amt(我猜数量,csv中的第三列)大于100的行。 / p>

答案 1 :(得分:0)

除了来自@Thomas Jungblut的回答,你的程序的下面一行说明了Mapper类的整体输入和输出。此处不会将任何内容重新标记为key,而将文本重新标记为value

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

写方法中的参数也是如此。

context.write(null, value);

从Mapper类编写序列化密钥并不总是必要的。根据您的使用案例,可以将密钥或值或两者都写入context.write方法。