为什么我的正则表达式在我的扫描中不能在hbase rowfilter中工作?

时间:2017-07-14 00:23:11

标签: regex hadoop hbase

我不明白为什么我的正则表达式在扫描hbase时不起作用。一切看起来都不错,但出于某种原因,当它应该返回我要求的那些时它会返回所有键

        Scan scan = new Scan();
        scan.addColumn(Bytes.toBytes("raw_data"), Bytes.toBytes(fileType));
        scan.setCaching(limit); 
        scan.setCacheBlocks(false);
        scan.setTimeRange(start, end);

        FilterList filters = new FilterList();          
        Filter rowFilter = new RowFilter(CompareFilter.CompareOp.EQUAL, new RegexStringComparator("100_.*_\\d{10}"));
        filters.addFilter(rowFilter);           
        scan.setFilter(filters);

        TableMapReduceUtil.initTableMapperJob(tableName, scan, MTTRMapper.class, Text.class, IntWritable.class, job);

rowkey在hbase中存储为字符串。 rowkey的格式为hash_servername_timestamp,例如

0_myserver.mydomain.com_1234567890

哈希值可以是0-199之间的任何数字。在上面的过滤器中,我只想获取hash = 100的所有元素,但由于某种原因,除了hash = 100的那些之外,扫描作业似乎还返回其他rowkeys。

我用jar版本1.0.1和1.2.0-cdh5.7.2尝试过这个。我做错了什么让正则表达式无效?

0 个答案:

没有答案