我正在使用Hadoop Map Reduce来计算Hbase数据库中的内容。我正在使用initTableMapperJob
方法来执行我的Hbase mapreduce作业。
下面的代码片段有效但我需要传入值,以便我只计算键中某些内容大于X的行。API docs不显示我可以使用的任何其他方法传递自定义值。
TableMapReduceUtil.initTableMapperJob(tableName, scan, MyMapper.class, Text.class, IntWritable.class, job);
MyMapper.class扩展了TableMapper,但我也找不到该类的任何内容。
理想情况下,我想写一个这样的函数:
@Override
public void map(ImmutableBytesWritable rowkey, Result columns, Context context) throws IOException, InterruptedException {
// extract the ci as the key from the rowkey
String pattern = "\\d*_(\\S*)_(\\d{10})";
String ciname = null;
Pattern r = Pattern.compile(pattern);
String strRowKey = Bytes.toString(rowkey.get());
Matcher m = r.matcher(strRowKey);
long ts = 0;
// get parts of the rowkey
ts = Long.valueOf(m.group(2)).longValue();
ciname = m.group(1);
// check the time here to see if we count it or not in the counts
if (ts > starttime) && (ts <= endtime)
context.write(new Text(ciname), ONE);
我需要一种方法将starttime和endtime值传递给mapper以进行比较测试,看看我们是否需要计算行数。