我是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);
}
}
}
答案 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
方法。