Hi Ventlam, You need to make sure the values truly are comparable. In other words, that you store the values using the same serialization mechanism as used by the filter. Do a test and read a row that you know that has that value and print it in hex representation, then do the same for Bytes.toBytes(value) and compare on a byte level to check. Often the stored value is slightly different and therefore does not match. The TestFilter.java has a test for the ValueFilter and it passes, so this seems to be something with your data?
Lars On Wed, Jan 5, 2011 at 12:55 PM, ventlam <[email protected]> wrote: > hey,guy! > I would like to get the cell value via the key word like"viki" . I used > ValueFilter to implement it ,but i got nothing. Is there any other ideas? > My code as follow: > try > { > HTable htable = new > HTable(hconf,Bytes.toBytes(tablename)); > > ValueFilter vfilter = new > ValueFilter(CompareOp.EQUAL,new BinaryComparator(Bytes.toBytes(value))); > > Scan s =new Scan(); > s.setFilter(vfilter); > ResultScanner rscanner = htable.getScanner(s); > > for(Result rs : rscanner) > { > byte [] by = > rs.getValue(Bytes.toBytes(tablename)); > > String vt= Bytes.toString(by); > System.out.println("The value is "+ > vt); > } > > } > catch(IOException e) > { > e.printStackTrace(); > } > >
