如何传递hadoop hbase映射器方法的参数

时间:2017-06-27 21:41:26

标签: java hadoop hbase

我正在使用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以进行比较测试,看看我们是否需要计算行数。

0 个答案:

没有答案