我不明白为什么我的正则表达式在扫描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\u servername\u timestamp,例如。
0_myserver.mydomain.com_1234567890
哈希可以是0-199之间的任意数字。在上面的过滤器中,我只想得到hash=100的所有元素,但是由于某种原因,scan作业似乎返回了hash=100之外的其他行键。
我在jar版本1.0.1和1.2.0-cdh5.7.2中尝试过这个。我做错了什么让正则表达式不起作用?
暂无答案!
目前还没有任何答案,快来回答吧!