Java 类org.apache.hadoop.hbase.filter.ValueFilter 实例源码
项目:HBaseTinkerGraph
文件:HbaseGraph.java
public Iterable<Edge> getEdges(String key, Object value) {
try {
Scan scan = new Scan(Bytes.toBytes(this.graphName+"_"+key), this.getEndKey(Bytes.toBytes(this.graphName+"_"+key)));
scan.addFamily(Bytes.toBytes("edge"));
scan.setFilter(new ValueFilter(CompareOp.EQUAL, new BinaryComparator(Bytes.toBytes(String.valueOf(value)))));
return new HbaseIterable<Edge>(scan, HbaseGraphUtils.PROPERTIESTABLENAME, hbaseConf) {
@Override
public Edge next(Result result) {
for(Cell cell : result.listCells()) {
String id = Bytes.toString(CellUtil.cloneQualifier(cell));
return new HbaseEdge(id, graphName, hbaseConf);
}
return null;
}
};
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}
项目:HBaseTinkerGraph
文件:HbaseGraph.java
public Iterable<Vertex> getVertices(String key, Object value) {
try {
Scan scan = new Scan(Bytes.toBytes(this.graphName+"_"+key), this.getEndKey(Bytes.toBytes(this.graphName+"_"+key)));
scan.addFamily(Bytes.toBytes("vertex"));
scan.setFilter(new ValueFilter(CompareOp.EQUAL, new BinaryComparator(Bytes.toBytes(String.valueOf(value)))));
return new HbaseIterable<Vertex>(scan, HbaseGraphUtils.PROPERTIESTABLENAME, hbaseConf) {
@Override
public Vertex next(Result result) {
for(Cell cell : result.listCells()) {
String id = Bytes.toString(CellUtil.cloneQualifier(cell));
return new HbaseVertex(id, graphName, hbaseConf);
}
return null;
}
};
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}
项目:themis
文件:TestThemisScanner.java
@Test
public void testScanWithFilter() throws IOException {
prepareScanData(TRANSACTION_COLUMNS);
writeData(COLUMN, lastTs(prewriteTs), ANOTHER_VALUE);
ValueFilter valueFilter = new ValueFilter(CompareOp.EQUAL, new BinaryComparator(ANOTHER_VALUE));
PrefixFilter prefixFilter = new PrefixFilter(ANOTHER_ROW);
FilterList filterList = new FilterList();
filterList.addFilter(valueFilter);
filterList.addFilter(prefixFilter);
ThemisScanner scanner = prepareScanner(TRANSACTION_COLUMNS, filterList);
checkAndCloseScanner(scanner);
filterList = new FilterList(Operator.MUST_PASS_ONE);
filterList.addFilter(valueFilter);
filterList.addFilter(prefixFilter);
scanner = prepareScanner(TRANSACTION_COLUMNS, filterList);
checkScanRow(new ColumnCoordinate[]{COLUMN_WITH_ANOTHER_ROW}, scanner.next());
Assert.assertEquals(1, scanner.next().size());
checkAndCloseScanner(scanner);
}
项目:cloud-bigtable-client
文件:ValueFilterAdapter.java
@Override
public RowFilter adapt(FilterAdapterContext context, ValueFilter filter) throws IOException {
if (filter.getComparator() instanceof BinaryComparator) {
return adaptBinaryComparator(
filter.getOperator(), (BinaryComparator) filter.getComparator());
} else if (filter.getComparator() instanceof RegexStringComparator) {
return adaptRegexStringComparator(
filter.getOperator(), (RegexStringComparator) filter.getComparator());
}
throw new IllegalStateException(
String.format("Cannot adapt filter with comparator%s", filter.getComparator()));
}
项目:cloud-bigtable-client
文件:ValueFilterAdapter.java
@Override
public FilterSupportStatus isFilterSupported(
FilterAdapterContext context, ValueFilter filter) {
if (filter.getComparator() instanceof BinaryComparator
|| (filter.getComparator() instanceof RegexStringComparator
&& filter.getOperator() == CompareOp.EQUAL)) {
return FilterSupportStatus.SUPPORTED;
}
return FilterSupportStatus.newNotSupported(
String.format(
"ValueFilter must have either a BinaryComparator with any compareOp "
+ "or a RegexStringComparator with an EQUAL compareOp. Found (%s, %s)",
filter.getComparator().getClass().getSimpleName(),
filter.getOperator()));
}
项目:cloud-bigtable-client
文件:TestValueFilterAdapter.java
private void assertAdaptedForm(
ByteArrayComparable comparable, CompareFilter.CompareOp op, RowFilter expectedFilter)
throws IOException {
ValueFilter filter = new ValueFilter(op, comparable);
RowFilter actualFilter = adapter.adapt(emptyScanContext, filter);
Assert.assertEquals(expectedFilter, actualFilter);
}
项目:cloud-bigtable-client
文件:TestFilters.java
@Test
public void testValueFilter() throws IOException {
// Initialize
int numGoodCols = 5;
int numBadCols = 20;
String goodValue = "includeThisValue";
Table table = getConnection().getTable(TABLE_NAME);
byte[] rowKey = dataHelper.randomData("testRow-");
Put put = new Put(rowKey);
for (int i = 0; i < numBadCols; ++i) {
put.addColumn(COLUMN_FAMILY, dataHelper.randomData(""), Bytes.toBytes("someval"));
}
for (int i = 0; i < numGoodCols; ++i) {
put.addColumn(COLUMN_FAMILY, dataHelper.randomData(""), Bytes.toBytes(goodValue));
}
table.put(put);
// Filter for results
Filter filter = new ValueFilter(
CompareFilter.CompareOp.EQUAL,
new BinaryComparator(Bytes.toBytes(goodValue)));
Get get = new Get(rowKey).setFilter(filter);
Result result = table.get(get);
Assert.assertEquals("Should only return good values", numGoodCols, result.size());
Cell[] cells = result.rawCells();
for (Cell cell : cells) {
Assert.assertTrue("Should have good value",
Bytes.toString(CellUtil.cloneValue(cell)).startsWith(goodValue));
}
table.close();
}
项目:playorm
文件:CursorForHbaseValues.java
private void loadCache(boolean reverse) {
if (cachedRows != null && cachedRows.hasNext())
return; // There are more rows so return and the code will return
// the next result from cache
if (needToGetBatch) {
if (batchListener != null)
batchListener.beforeFetchingNextBatch();
Result[] result = null;
byte[] family = Bytes.toBytes(indexTableName);
List<Get> listGet = new ArrayList<Get>();
for (byte[] key : values) {
Get get = new Get(rowKey);
CompareFilter.CompareOp equal = CompareOp.EQUAL;
if (key != null) {
BinaryComparator valueComparator = createComparaor(key);
ValueFilter filter = new ValueFilter(equal, valueComparator);
get.setFilter(filter);
get.addFamily(family);
listGet.add(get);
}
}
try {
result = htable.get(listGet);
} catch (IOException e) {
e.printStackTrace();
}
fillCache(result);
needToGetBatch = false;
if (reverse) {
while (cachedRows.hasNext())
cachedRows.next();
}
}
}
项目:IRIndex
文件:TestScannersWithFilters.java
@Test
public void testFilterList() throws Exception {
// Test getting a single row, single key using Row, Qualifier, and Value
// regular expression and substring filters
// Use must pass all
List<Filter> filters = new ArrayList<Filter>();
filters.add(new RowFilter(CompareOp.EQUAL,
new RegexStringComparator(".+-2")));
filters.add(new QualifierFilter(CompareOp.EQUAL,
new RegexStringComparator(".+-2")));
filters.add(new ValueFilter(CompareOp.EQUAL,
new SubstringComparator("One")));
Filter f = new FilterList(Operator.MUST_PASS_ALL, filters);
Scan s = new Scan();
s.addFamily(FAMILIES[0]);
s.setFilter(f);
KeyValue [] kvs = {
new KeyValue(ROWS_ONE[2], FAMILIES[0], QUALIFIERS_ONE[2], VALUES[0])
};
verifyScanFull(s, kvs);
// Test getting everything with a MUST_PASS_ONE filter including row, qf,
// val, regular expression and substring filters
filters.clear();
filters.add(new RowFilter(CompareOp.EQUAL,
new RegexStringComparator(".+Two.+")));
filters.add(new QualifierFilter(CompareOp.EQUAL,
new RegexStringComparator(".+-2")));
filters.add(new ValueFilter(CompareOp.EQUAL,
new SubstringComparator("One")));
f = new FilterList(Operator.MUST_PASS_ONE, filters);
s = new Scan();
s.setFilter(f);
verifyScanNoEarlyOut(s, numRows, colsPerRow);
}
项目:themis
文件:TestThemisCoprocessorRead.java
@Test
public void testGetWithFilter() throws IOException {
// rowkey filter pass while column filter not pass
commitColumnsWithDifferentTs();
Get get = createGetForDifferentTs();
FilterList filterList = new FilterList();
filterList.addFilter(new PrefixFilter(ROW));
filterList.addFilter(new ValueFilter(CompareOp.EQUAL, new BinaryComparator(ANOTHER_VALUE)));
get.setFilter(filterList);
Result iResult = cpClient.themisGet(TABLENAME, get, prewriteTs);
Assert.assertTrue(iResult.isEmpty());
filterList = new FilterList(Operator.MUST_PASS_ONE);
filterList.addFilter(new PrefixFilter(ROW));
filterList.addFilter(new ValueFilter(CompareOp.EQUAL, new BinaryComparator(ANOTHER_VALUE)));
get.setFilter(filterList);
iResult = cpClient.themisGet(TABLENAME, get, prewriteTs);
checkGetResultForDifferentTs(iResult);
// rowkey filter not pass while column filter pass
filterList = new FilterList();
filterList.addFilter(new PrefixFilter(ANOTHER_ROW));
filterList.addFilter(new ValueFilter(CompareOp.EQUAL, new BinaryComparator(VALUE)));
get.setFilter(filterList);
iResult = cpClient.themisGet(TABLENAME, get, prewriteTs);
Assert.assertTrue(iResult.isEmpty());
filterList = new FilterList(Operator.MUST_PASS_ONE);
filterList.addFilter(new PrefixFilter(ANOTHER_ROW));
filterList.addFilter(new ValueFilter(CompareOp.EQUAL, new BinaryComparator(VALUE)));
get.setFilter(filterList);
iResult = cpClient.themisGet(TABLENAME, get, prewriteTs);
checkGetResultForDifferentTs(iResult);
}
项目:hbase
文件:TestScannersWithFilters.java
@Test
public void testFilterList() throws Exception {
// Test getting a single row, single key using Row, Qualifier, and Value
// regular expression and substring filters
// Use must pass all
List<Filter> filters = new ArrayList<>(3);
filters.add(new RowFilter(CompareOperator.EQUAL,
new RegexStringComparator(".+-2")));
filters.add(new QualifierFilter(CompareOperator.EQUAL,
new RegexStringComparator(".+-2")));
filters.add(new ValueFilter(CompareOperator.EQUAL,
new SubstringComparator("One")));
Filter f = new FilterList(Operator.MUST_PASS_ALL, filters);
Scan s = new Scan();
s.addFamily(FAMILIES[0]);
s.setFilter(f);
KeyValue [] kvs = {
new KeyValue(ROWS_ONE[2], FAMILIES[0], QUALIFIERS_ONE[2], VALUES[0])
};
verifyScanFull(s, kvs);
// Test getting everything with a MUST_PASS_ONE filter including row, qf,
// val, regular expression and substring filters
filters.clear();
filters.add(new RowFilter(CompareOperator.EQUAL,
new RegexStringComparator(".+Two.+")));
filters.add(new QualifierFilter(CompareOperator.EQUAL,
new RegexStringComparator(".+-2")));
filters.add(new ValueFilter(CompareOperator.EQUAL,
new SubstringComparator("One")));
f = new FilterList(Operator.MUST_PASS_ONE, filters);
s = new Scan();
s.setFilter(f);
verifyScanNoEarlyOut(s, numRows, colsPerRow);
}
项目:PyroDB
文件:TestScannersWithFilters.java
@Test
public void testFilterList() throws Exception {
// Test getting a single row, single key using Row, Qualifier, and Value
// regular expression and substring filters
// Use must pass all
List<Filter> filters = new ArrayList<Filter>();
filters.add(new RowFilter(CompareOp.EQUAL,
new RegexStringComparator(".+-2")));
filters.add(new QualifierFilter(CompareOp.EQUAL,
new RegexStringComparator(".+-2")));
filters.add(new ValueFilter(CompareOp.EQUAL,
new SubstringComparator("One")));
Filter f = new FilterList(Operator.MUST_PASS_ALL, filters);
Scan s = new Scan();
s.addFamily(FAMILIES[0]);
s.setFilter(f);
KeyValue [] kvs = {
new KeyValue(ROWS_ONE[2], FAMILIES[0], QUALIFIERS_ONE[2], VALUES[0])
};
verifyScanFull(s, kvs);
// Test getting everything with a MUST_PASS_ONE filter including row, qf,
// val, regular expression and substring filters
filters.clear();
filters.add(new RowFilter(CompareOp.EQUAL,
new RegexStringComparator(".+Two.+")));
filters.add(new QualifierFilter(CompareOp.EQUAL,
new RegexStringComparator(".+-2")));
filters.add(new ValueFilter(CompareOp.EQUAL,
new SubstringComparator("One")));
f = new FilterList(Operator.MUST_PASS_ONE, filters);
s = new Scan();
s.setFilter(f);
verifyScanNoEarlyOut(s, numRows, colsPerRow);
}
项目:c5
文件:TestScannersWithFilters.java
@Test
public void testFilterList() throws Exception {
// Test getting a single row, single key using Row, Qualifier, and Value
// regular expression and substring filters
// Use must pass all
List<Filter> filters = new ArrayList<Filter>();
filters.add(new RowFilter(CompareOp.EQUAL,
new RegexStringComparator(".+-2")));
filters.add(new QualifierFilter(CompareOp.EQUAL,
new RegexStringComparator(".+-2")));
filters.add(new ValueFilter(CompareOp.EQUAL,
new SubstringComparator("One")));
Filter f = new FilterList(Operator.MUST_PASS_ALL, filters);
Scan s = new Scan();
s.addFamily(FAMILIES[0]);
s.setFilter(f);
KeyValue [] kvs = {
new KeyValue(ROWS_ONE[2], FAMILIES[0], QUALIFIERS_ONE[2], VALUES[0])
};
verifyScanFull(s, kvs);
// Test getting everything with a MUST_PASS_ONE filter including row, qf,
// val, regular expression and substring filters
filters.clear();
filters.add(new RowFilter(CompareOp.EQUAL,
new RegexStringComparator(".+Two.+")));
filters.add(new QualifierFilter(CompareOp.EQUAL,
new RegexStringComparator(".+-2")));
filters.add(new ValueFilter(CompareOp.EQUAL,
new SubstringComparator("One")));
f = new FilterList(Operator.MUST_PASS_ONE, filters);
s = new Scan();
s.setFilter(f);
verifyScanNoEarlyOut(s, numRows, colsPerRow);
}
项目:pentaho-hadoop-shims
文件:CommonHBaseConnection.java
void addFilterByMapping( FilterList fl, CompareFilter.CompareOp comp, Class<?> comparatorClass, Object comparator,
Mapping.TupleMapping tupleMapping ) throws NoSuchMethodException, InstantiationException, IllegalAccessException,
java.lang.reflect.InvocationTargetException {
switch ( tupleMapping ) {
case KEY: {
addFilter( RowFilter.class, fl, comp, comparatorClass, comparator );
return;
}
case FAMILY: {
addFilter( FamilyFilter.class, fl, comp, comparatorClass, comparator );
return;
}
case COLUMN: {
//TODO Check if ColumnPrefixFilter works faster and suit more
addFilter( QualifierFilter.class, fl, comp, comparatorClass, comparator );
return;
}
case VALUE: {
addFilter( ValueFilter.class, fl, comp, comparatorClass, comparator );
return;
}
case TIMESTAMP: {
addFilter( TimestampsFilter.class, fl, comp, comparatorClass, comparator );
// Constructor<TimestampsFilter> columnFilterConstructor =
// TimestampsFilter.class.getConstructor( CompareFilter.CompareOp.class, comparatorClass );
// TimestampsFilter scf = columnFilterConstructor.newInstance( comp, comparator );
// fl.addFilter( scf );
return;
}
}
}
项目:pentaho-hadoop-shims
文件:HBase11HBaseConnectionTest.java
@Test
public void testAddFilterByMapping() throws Exception {
testAddFilterByMapping( Mapping.TupleMapping.KEY, RowFilter.class );
testAddFilterByMapping( Mapping.TupleMapping.FAMILY, FamilyFilter.class );
testAddFilterByMapping( Mapping.TupleMapping.COLUMN, QualifierFilter.class );
testAddFilterByMapping( Mapping.TupleMapping.VALUE, ValueFilter.class );
}
项目:HBase-Research
文件:TestScannersWithFilters.java
@Test
public void testFilterList() throws Exception {
// Test getting a single row, single key using Row, Qualifier, and Value
// regular expression and substring filters
// Use must pass all
List<Filter> filters = new ArrayList<Filter>();
filters.add(new RowFilter(CompareOp.EQUAL,
new RegexStringComparator(".+-2")));
filters.add(new QualifierFilter(CompareOp.EQUAL,
new RegexStringComparator(".+-2")));
filters.add(new ValueFilter(CompareOp.EQUAL,
new SubstringComparator("One")));
Filter f = new FilterList(Operator.MUST_PASS_ALL, filters);
Scan s = new Scan();
s.addFamily(FAMILIES[0]);
s.setFilter(f);
KeyValue [] kvs = {
new KeyValue(ROWS_ONE[2], FAMILIES[0], QUALIFIERS_ONE[2], VALUES[0])
};
verifyScanFull(s, kvs);
// Test getting everything with a MUST_PASS_ONE filter including row, qf,
// val, regular expression and substring filters
filters.clear();
filters.add(new RowFilter(CompareOp.EQUAL,
new RegexStringComparator(".+Two.+")));
filters.add(new QualifierFilter(CompareOp.EQUAL,
new RegexStringComparator(".+-2")));
filters.add(new ValueFilter(CompareOp.EQUAL,
new SubstringComparator("One")));
f = new FilterList(Operator.MUST_PASS_ONE, filters);
s = new Scan();
s.setFilter(f);
verifyScanNoEarlyOut(s, numRows, colsPerRow);
}
项目:hbase-0.94.8-qod
文件:TestScannersWithFilters.java
@Test
public void testFilterList() throws Exception {
// Test getting a single row, single key using Row, Qualifier, and Value
// regular expression and substring filters
// Use must pass all
List<Filter> filters = new ArrayList<Filter>();
filters.add(new RowFilter(CompareOp.EQUAL,
new RegexStringComparator(".+-2")));
filters.add(new QualifierFilter(CompareOp.EQUAL,
new RegexStringComparator(".+-2")));
filters.add(new ValueFilter(CompareOp.EQUAL,
new SubstringComparator("One")));
Filter f = new FilterList(Operator.MUST_PASS_ALL, filters);
Scan s = new Scan();
s.addFamily(FAMILIES[0]);
s.setFilter(f);
KeyValue [] kvs = {
new KeyValue(ROWS_ONE[2], FAMILIES[0], QUALIFIERS_ONE[2], VALUES[0])
};
verifyScanFull(s, kvs);
// Test getting everything with a MUST_PASS_ONE filter including row, qf,
// val, regular expression and substring filters
filters.clear();
filters.add(new RowFilter(CompareOp.EQUAL,
new RegexStringComparator(".+Two.+")));
filters.add(new QualifierFilter(CompareOp.EQUAL,
new RegexStringComparator(".+-2")));
filters.add(new ValueFilter(CompareOp.EQUAL,
new SubstringComparator("One")));
f = new FilterList(Operator.MUST_PASS_ONE, filters);
s = new Scan();
s.setFilter(f);
verifyScanNoEarlyOut(s, numRows, colsPerRow);
}
项目:hbase-0.94.8-qod
文件:TestScannersWithFilters.java
@Test
public void testFilterList() throws Exception {
// Test getting a single row, single key using Row, Qualifier, and Value
// regular expression and substring filters
// Use must pass all
List<Filter> filters = new ArrayList<Filter>();
filters.add(new RowFilter(CompareOp.EQUAL,
new RegexStringComparator(".+-2")));
filters.add(new QualifierFilter(CompareOp.EQUAL,
new RegexStringComparator(".+-2")));
filters.add(new ValueFilter(CompareOp.EQUAL,
new SubstringComparator("One")));
Filter f = new FilterList(Operator.MUST_PASS_ALL, filters);
Scan s = new Scan();
s.addFamily(FAMILIES[0]);
s.setFilter(f);
KeyValue [] kvs = {
new KeyValue(ROWS_ONE[2], FAMILIES[0], QUALIFIERS_ONE[2], VALUES[0])
};
verifyScanFull(s, kvs);
// Test getting everything with a MUST_PASS_ONE filter including row, qf,
// val, regular expression and substring filters
filters.clear();
filters.add(new RowFilter(CompareOp.EQUAL,
new RegexStringComparator(".+Two.+")));
filters.add(new QualifierFilter(CompareOp.EQUAL,
new RegexStringComparator(".+-2")));
filters.add(new ValueFilter(CompareOp.EQUAL,
new SubstringComparator("One")));
f = new FilterList(Operator.MUST_PASS_ONE, filters);
s = new Scan();
s.setFilter(f);
verifyScanNoEarlyOut(s, numRows, colsPerRow);
}
项目:DominoHBase
文件:TestScannersWithFilters.java
@Test
public void testFilterList() throws Exception {
// Test getting a single row, single key using Row, Qualifier, and Value
// regular expression and substring filters
// Use must pass all
List<Filter> filters = new ArrayList<Filter>();
filters.add(new RowFilter(CompareOp.EQUAL,
new RegexStringComparator(".+-2")));
filters.add(new QualifierFilter(CompareOp.EQUAL,
new RegexStringComparator(".+-2")));
filters.add(new ValueFilter(CompareOp.EQUAL,
new SubstringComparator("One")));
Filter f = new FilterList(Operator.MUST_PASS_ALL, filters);
Scan s = new Scan();
s.addFamily(FAMILIES[0]);
s.setFilter(f);
KeyValue [] kvs = {
new KeyValue(ROWS_ONE[2], FAMILIES[0], QUALIFIERS_ONE[2], VALUES[0])
};
verifyScanFull(s, kvs);
// Test getting everything with a MUST_PASS_ONE filter including row, qf,
// val, regular expression and substring filters
filters.clear();
filters.add(new RowFilter(CompareOp.EQUAL,
new RegexStringComparator(".+Two.+")));
filters.add(new QualifierFilter(CompareOp.EQUAL,
new RegexStringComparator(".+-2")));
filters.add(new ValueFilter(CompareOp.EQUAL,
new SubstringComparator("One")));
f = new FilterList(Operator.MUST_PASS_ONE, filters);
s = new Scan();
s.setFilter(f);
verifyScanNoEarlyOut(s, numRows, colsPerRow);
}
项目:hindex
文件:TestScannersWithFilters.java
@Test
public void testFilterList() throws Exception {
// Test getting a single row, single key using Row, Qualifier, and Value
// regular expression and substring filters
// Use must pass all
List<Filter> filters = new ArrayList<Filter>();
filters.add(new RowFilter(CompareOp.EQUAL,
new RegexStringComparator(".+-2")));
filters.add(new QualifierFilter(CompareOp.EQUAL,
new RegexStringComparator(".+-2")));
filters.add(new ValueFilter(CompareOp.EQUAL,
new SubstringComparator("One")));
Filter f = new FilterList(Operator.MUST_PASS_ALL, filters);
Scan s = new Scan();
s.addFamily(FAMILIES[0]);
s.setFilter(f);
KeyValue [] kvs = {
new KeyValue(ROWS_ONE[2], FAMILIES[0], QUALIFIERS_ONE[2], VALUES[0])
};
verifyScanFull(s, kvs);
// Test getting everything with a MUST_PASS_ONE filter including row, qf,
// val, regular expression and substring filters
filters.clear();
filters.add(new RowFilter(CompareOp.EQUAL,
new RegexStringComparator(".+Two.+")));
filters.add(new QualifierFilter(CompareOp.EQUAL,
new RegexStringComparator(".+-2")));
filters.add(new ValueFilter(CompareOp.EQUAL,
new SubstringComparator("One")));
f = new FilterList(Operator.MUST_PASS_ONE, filters);
s = new Scan();
s.setFilter(f);
verifyScanNoEarlyOut(s, numRows, colsPerRow);
}
项目:incubator-omid
文件:TestFilters.java
@Test(timeOut = 60_000)
public void testGetWithValueFilter(ITestContext context) throws Exception {
testGet(context, new ValueFilter(CompareFilter.CompareOp.EQUAL, new BinaryComparator(col1)));
}
项目:incubator-omid
文件:TestFilters.java
@Test(timeOut = 60_000)
public void testScanWithValueFilter(ITestContext context) throws Exception {
testScan(context, new ValueFilter(CompareFilter.CompareOp.EQUAL, new BinaryComparator(col1)));
}
项目:cloud-bigtable-client
文件:BigtableTable.java
protected CheckAndMutateRowRequest.Builder makeConditionalMutationRequestBuilder(
byte[] row,
byte[] family,
byte[] qualifier,
CompareFilter.CompareOp compareOp,
byte[] value,
byte[] actionRow,
List<com.google.bigtable.v1.Mutation> mutations) throws IOException {
if (!Arrays.equals(actionRow, row)) {
// The following odd exception message is for compat with HBase.
throw new DoNotRetryIOException("Action's getRow must match the passed row");
}
CheckAndMutateRowRequest.Builder requestBuilder =
CheckAndMutateRowRequest.newBuilder();
metadataSetter.setMetadata(requestBuilder);
requestBuilder.setRowKey(ByteString.copyFrom(row));
Scan scan = new Scan().addColumn(family, qualifier);
scan.setMaxVersions(1);
if (value == null) {
// If we don't have a value and we are doing CompareOp.EQUAL, we want to mutate if there
// is no cell with the qualifier. If we are doing CompareOp.NOT_EQUAL, we want to mutate
// if there is any cell. We don't actually want an extra filter for either of these cases,
// but we do need to invert the compare op.
if (CompareFilter.CompareOp.EQUAL.equals(compareOp)) {
requestBuilder.addAllFalseMutations(mutations);
} else if (CompareFilter.CompareOp.NOT_EQUAL.equals(compareOp)) {
requestBuilder.addAllTrueMutations(mutations);
}
} else {
ValueFilter valueFilter =
new ValueFilter(compareOp, new BinaryComparator(value));
scan.setFilter(valueFilter);
requestBuilder.addAllTrueMutations(mutations);
}
requestBuilder.setPredicateFilter(
new ScanAdapter(filterAdapter)
.buildFilter(scan));
return requestBuilder;
}
项目:cloud-bigtable-client
文件:FilterAdapter.java
/**
* Create a new FilterAdapter
*/
public static FilterAdapter buildAdapter() {
FilterAdapter adapter = new FilterAdapter();
adapter.addFilterAdapter(
ColumnPrefixFilter.class, new ColumnPrefixFilterAdapter());
adapter.addFilterAdapter(
ColumnRangeFilter.class, new ColumnRangeFilterAdapter());
adapter.addFilterAdapter(
KeyOnlyFilter.class, new KeyOnlyFilterAdapter());
adapter.addFilterAdapter(
MultipleColumnPrefixFilter.class, new MultipleColumnPrefixFilterAdapter());
adapter.addFilterAdapter(
TimestampsFilter.class, new TimestampsFilterAdapter());
ValueFilterAdapter valueFilterAdapter = new ValueFilterAdapter();
adapter.addFilterAdapter(
ValueFilter.class, valueFilterAdapter);
SingleColumnValueFilterAdapter scvfa =
new SingleColumnValueFilterAdapter(valueFilterAdapter);
adapter.addFilterAdapter(
SingleColumnValueFilter.class, scvfa);
adapter.addFilterAdapter(
SingleColumnValueExcludeFilter.class,
new SingleColumnValueExcludeFilterAdapter(scvfa));
adapter.addFilterAdapter(
ColumnPaginationFilter.class, new ColumnPaginationFilterAdapter());
adapter.addFilterAdapter(
FirstKeyOnlyFilter.class, new FirstKeyOnlyFilterAdapter());
adapter.addFilterAdapter(
ColumnCountGetFilter.class, new ColumnCountGetFilterAdapter());
adapter.addFilterAdapter(
RandomRowFilter.class, new RandomRowFilterAdapter());
adapter.addFilterAdapter(
PrefixFilter.class, new PrefixFilterAdapter());
adapter.addFilterAdapter(
QualifierFilter.class, new QualifierFilterAdapter());
// Passing the FilterAdapter in to the FilterListAdapter is a bit
// unfortunate, but makes adapting the FilterList's subfilters simpler.
FilterListAdapter filterListAdapter = new FilterListAdapter(adapter);
// FilterList implements UnsupportedStatusCollector so it should
// be used when possible (third parameter to addFilterAdapter()).
adapter.addFilterAdapter(
FilterList.class, filterListAdapter, filterListAdapter);
return adapter;
}
项目:cloud-bigtable-client
文件:SingleColumnValueFilterAdapter.java
/**
* Construct a ValueFilter for a SingleColumnValueFilter.
*/
private ValueFilter createValueFilter(SingleColumnValueFilter filter) {
return new ValueFilter(filter.getOperator(), filter.getComparator());
}
项目:cloud-bigtable-client
文件:SingleColumnValueFilterAdapter.java
/**
* Emit a filter that will match against a single value.
*/
private RowFilter createValueMatchFilter(
FilterAdapterContext context, SingleColumnValueFilter filter) throws IOException {
ValueFilter valueFilter = createValueFilter(filter);
return delegateAdapter.adapt(context, valueFilter);
}
项目:cloud-bigtable-client
文件:TestFilterListAdapter.java
FilterList makeFilterList(Operator filterOperator) {
return new FilterList(
filterOperator,
new ValueFilter(CompareOp.EQUAL, new BinaryComparator(Bytes.toBytes("value"))),
new ValueFilter(CompareOp.EQUAL, new BinaryComparator(Bytes.toBytes("value2"))));
}
项目:playorm
文件:CursorOfHbaseIndexes.java
private void loadCache(boolean reverse) {
if (cachedRows != null && cachedRows.hasNext())
return; // There are more rows so return and the code will return
// the next result from cache
if (needToGetBatch) {
if (batchListener != null)
batchListener.beforeFetchingNextBatch();
byte[] family = Bytes.toBytes(indexTableName);
Scan scan = new Scan(rowKey, rowKey);
scan.addFamily(family);
FilterList list = new FilterList(FilterList.Operator.MUST_PASS_ALL);
if (from != null) {
ValueFilter fromfilter = createFilterFrom();
list.addFilter(fromfilter);
}
if (to != null) {
ValueFilter toFilter = createFilterTo();
list.addFilter(toFilter);
}
if (!list.getFilters().isEmpty())
scan.setFilter(list);
if (batchSize != null)
scan.setBatch(batchSize); // set this if there could be many columns returned
ResultScanner rs;
List<KeyValue> finalRes = new ArrayList<KeyValue>();
try {
rs = hTable.getScanner(scan);
for (Result r = rs.next(); r != null; r = rs.next()) {
for (KeyValue kv : r.raw()) {
finalRes.add(kv);
}
}
rs.close();
if (batchListener != null)
batchListener.afterFetchingNextBatch(2);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
fillinCache(finalRes);
needToGetBatch = false;
if (reverse) {
while (cachedRows.hasNext())
cachedRows.next();
}
}
}
项目:themis
文件:TestThemisCoprocessorRead.java
@Test
public void testGetWithNoRowkeyFilter() throws IOException {
// test ValueFilter
commitColumnsWithDifferentTs();
Get get = createGetForDifferentTs();
get.setFilter(new ValueFilter(CompareOp.EQUAL, new BinaryComparator(ANOTHER_VALUE)));
Result iResult = cpClient.themisGet(TABLENAME, get, prewriteTs);
Assert.assertTrue(iResult.isEmpty());
// test SingleColumnValueFilter
get.setFilter(new SingleColumnValueFilter(FAMILY, QUALIFIER, CompareOp.EQUAL, ANOTHER_VALUE));
iResult = cpClient.themisGet(TABLENAME, get, prewriteTs);
Assert.assertTrue(iResult.isEmpty());
writeData(COLUMN, prewriteTs - 200, ANOTHER_VALUE);
writePutColumn(COLUMN, prewriteTs - 200, commitTs - 200);
get.setFilter(new ValueFilter(CompareOp.EQUAL, new BinaryComparator(ANOTHER_VALUE)));
iResult = cpClient.themisGet(TABLENAME, get, prewriteTs);
Assert.assertTrue(iResult.list().size() == 1 && !ThemisCpUtil.isLockResult(iResult));
Assert.assertEquals(prewriteTs - 200, iResult.list().get(0).getTimestamp());
get.setFilter(new SingleColumnValueFilter(FAMILY, QUALIFIER, CompareOp.EQUAL, ANOTHER_VALUE));
iResult = cpClient.themisGet(TABLENAME, get, prewriteTs);
checkGetResultForDifferentTs(iResult);
// test FilterList with MUST_PASS_ALL
FilterList filterList = new FilterList();
filterList.addFilter(new ValueFilter(CompareOp.EQUAL, new BinaryComparator(ANOTHER_VALUE)));
filterList.addFilter(new SingleColumnValueFilter(FAMILY, QUALIFIER, CompareOp.EQUAL, ANOTHER_VALUE));
get.setFilter(filterList);
iResult = cpClient.themisGet(TABLENAME, get, prewriteTs);
Assert.assertTrue(iResult.list().size() == 1 && !ThemisCpUtil.isLockResult(iResult));
Assert.assertEquals(prewriteTs - 200, iResult.list().get(0).getTimestamp());
// test FilterList with MUST_PASS_ONE
filterList = new FilterList(Operator.MUST_PASS_ONE);
filterList.addFilter(new ValueFilter(CompareOp.EQUAL, new BinaryComparator(ANOTHER_VALUE)));
filterList.addFilter(new SingleColumnValueFilter(FAMILY, QUALIFIER, CompareOp.EQUAL, ANOTHER_VALUE));
get.setFilter(filterList);
iResult = cpClient.themisGet(TABLENAME, get, prewriteTs);
checkGetResultForDifferentTs(iResult);
// test transfer filter
get.setFilter(new KeyOnlyFilter());
iResult = cpClient.themisGet(TABLENAME, get, prewriteTs);
checkGetResultForDifferentTs(iResult);
for (KeyValue kv : iResult.list()) {
Assert.assertEquals(0, kv.getValueLength());
}
}
项目:hbase
文件:TestHRegion.java
@Test
public void testGetWithFilter() throws IOException, InterruptedException {
byte[] row1 = Bytes.toBytes("row1");
byte[] fam1 = Bytes.toBytes("fam1");
byte[] col1 = Bytes.toBytes("col1");
byte[] value1 = Bytes.toBytes("value1");
byte[] value2 = Bytes.toBytes("value2");
final int maxVersions = 3;
HColumnDescriptor hcd = new HColumnDescriptor(fam1);
hcd.setMaxVersions(maxVersions);
HTableDescriptor htd = new HTableDescriptor(TableName.valueOf("testFilterAndColumnTracker"));
htd.addFamily(hcd);
ChunkCreator.initialize(MemStoreLABImpl.CHUNK_SIZE_DEFAULT, false, 0, 0, 0, null);
HRegionInfo info = new HRegionInfo(htd.getTableName(), null, null, false);
Path logDir = TEST_UTIL.getDataTestDirOnTestFS(method + ".log");
final WAL wal = HBaseTestingUtility.createWal(TEST_UTIL.getConfiguration(), logDir, info);
this.region = TEST_UTIL.createLocalHRegion(info, htd, wal);
try {
// Put 4 version to memstore
long ts = 0;
Put put = new Put(row1, ts);
put.addColumn(fam1, col1, value1);
region.put(put);
put = new Put(row1, ts + 1);
put.addColumn(fam1, col1, Bytes.toBytes("filter1"));
region.put(put);
put = new Put(row1, ts + 2);
put.addColumn(fam1, col1, Bytes.toBytes("filter2"));
region.put(put);
put = new Put(row1, ts + 3);
put.addColumn(fam1, col1, value2);
region.put(put);
Get get = new Get(row1);
get.setMaxVersions();
Result res = region.get(get);
// Get 3 versions, the oldest version has gone from user view
assertEquals(maxVersions, res.size());
get.setFilter(new ValueFilter(CompareOp.EQUAL, new SubstringComparator("value")));
res = region.get(get);
// When use value filter, the oldest version should still gone from user view and it
// should only return one key vaule
assertEquals(1, res.size());
assertTrue(CellUtil.matchingValue(new KeyValue(row1, fam1, col1, value2), res.rawCells()[0]));
assertEquals(ts + 3, res.rawCells()[0].getTimestamp());
region.flush(true);
region.compact(true);
Thread.sleep(1000);
res = region.get(get);
// After flush and compact, the result should be consistent with previous result
assertEquals(1, res.size());
assertTrue(CellUtil.matchingValue(new KeyValue(row1, fam1, col1, value2), res.rawCells()[0]));
} finally {
HBaseTestingUtility.closeRegionAndWAL(this.region);
this.region = null;
}
}