我不明白为什么我的正则表达式在扫描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尝试过这个。我做错了什么让正则表达式无效?