Hi, 

Sorry for not getting back to you earlier. I haven't had any chance to run 
HBase since then, but for this weekend , I will. I'll let you know the result 
soon.

Thanks, 

--
Tatsuya Kawano
Tokyo, Japan


On Feb 24, 2011, at 8:25 PM, 陈加俊 <[email protected]> wrote:

> Thank you !  HBase version is 0.20.6
> 
> On Thu, Feb 24, 2011 at 6:33 PM, Tatsuya Kawano <[email protected]> wrote:
> 
> Hmmm, it's strange. Let me try your code on my cluster this weekend. What the 
> HBase version are you using?
> 
> --
> Tatsuya Kawano
> Tokyo, Japan
> 
> 
> On Feb 24, 2011, at 5:01 PM, 陈加俊 <[email protected]> wrote:
> 
> > It will be right if according to the following process:
> >
> > step 1: create 'testTable',{NAME => 'log' , VERSIONS => 5 }
> >
> > step 2: excute my code below
> >
> > I will be wrong if uncomment the code :table.delete(new Delete(rowKey));
> >
> > I will be run right agin If I comment the code and change the rowKey.
> >
> >
> >
> > My code below :
> >
> >
> > public class GetRowVersionsTest extends TestCase
> >
> > {
> >
> >    private final byte[] family    = Bytes.toBytes("log");
> >
> >
> >    private final byte[] qualifier = Bytes.toBytes("siteUrl");
> >
> >
> >    private final byte[] rowKey    = Bytes.toBytes(1000);
> >
> >
> >    private final HTable table     =
> > IDMHBaseConfiguration.getTable("testTable");
> >
> >
> >    private final long   ts1       = 1298529542218L;
> >
> >
> >    private final long   ts2       = ts1 + 100;
> >
> >
> >    private final long   ts3       = ts1 + 1000;
> >
> >
> >    private final byte[] value1    = Bytes.toBytes("value1");
> >
> >
> >    private final byte[] value2    = Bytes.toBytes("value2");
> >
> >
> >    private final byte[] value3    = Bytes.toBytes("value3");
> >
> >
> >    private void insert(final long ts, final byte[] value) throws
> > IOException
> >
> >    {
> >
> >        //        table.setAutoFlush(false);
> >
> >        final Put put = new Put(rowKey);
> >
> >        put.add(family, qualifier, ts, value);
> >
> >        table.put(put);
> >
> >    }
> >
> >
> >    private void sleep()
> >
> >    {
> >
> >        try
> >
> >        {
> >
> >            Thread.sleep(1000);
> >
> >        }
> >
> >        catch (final InterruptedException e)
> >
> >        {
> >
> >            e.printStackTrace();
> >
> >        }
> >
> >    }
> >
> >
> >    @Test
> >
> >    public void testGetRowMultipleVersions() throws Exception
> >
> >    {
> >
> >        insert(ts1, value1);
> >
> >        sleep();
> >
> >        insert(ts2, value2);
> >
> >        sleep();
> >
> >        insert(ts3, value3);
> >
> >        sleep();
> >
> >
> >        // check getRow with multiple versions
> >
> >        final Get get = new Get(rowKey);
> >
> >        get.setMaxVersions();
> >
> >        final Result r = table.get(get);
> >
> >
> >        final List<KeyValue> list = r.list();
> >
> >        for (final KeyValue kv : list)
> >
> >        {
> >
> >            System.err.println(kv.getKey());
> >
> >            System.err.println(Bytes.toString(kv.getValue()));
> >
> >        }
> >
> >
> >        final NavigableMap<byte[], NavigableMap<byte[], NavigableMap<Long,
> > byte[]>>> map = r.getMap();
> >
> >        final NavigableMap<byte[], NavigableMap<Long, byte[]>> familyMap =
> > map.get(family);
> >
> >        final NavigableMap<Long, byte[]> versionMap =
> > familyMap.get(qualifier);
> >
> >        for (final Map.Entry<Long, byte[]> entry : versionMap.entrySet())
> >
> >        {
> >
> >            System.err.println(entry.getKey());
> >
> >            System.err.println(Bytes.toString(entry.getValue()));
> >
> >        }
> >
> >        //        assertTrue(versionMap.size() == 3);
> >
> >
> >        //        assertTrue(value1 == versionMap.get(ts1));
> >
> >        //        assertTrue(value2 == versionMap.get(ts2));
> >
> >        //        assertTrue(value3 == versionMap.get(ts3));
> >
> >
> >        // table.delete(new Delete(rowKey));
> >
> >        // assertTrue(table.get(get).size() == 0);
> >
> >        //        table.close();
> >
> >    }
> >
> >
> > On Thu, Feb 24, 2011 at 3:41 PM, Lars George <[email protected]> wrote:
> >
> >> What error are you getting? The NPE?
> >>
> >> As Tatsuya pointed out, you are using the same time stamps:
> >>
> >>  private final long   ts2       = ts1 + 100;
> >>
> >>  private final long   ts3       = ts1 + 100;
> >>
> >> That cannot work, you are overriding cells.
> >>
> >> Lars
> >>
> >> On Thu, Feb 24, 2011 at 8:34 AM, 陈加俊 <[email protected]> wrote:
> >>> HTable object has not setAutoFlush. It's default value is true at my
> >>> cluster.So I set it true as follows ,but error is still the same.
> >>>
> >>> public class GetRowVersionsTest extends TestCase
> >>> {
> >>>   private final byte[] family    = Bytes.toBytes("log");
> >>>
> >>>   private final byte[] qualifier = Bytes.toBytes("siteUrl");
> >>>
> >>>   private final byte[] rowKey    = Bytes.toBytes(1);
> >>>
> >>>   private final long   ts1       = 1298529542218L;
> >>>
> >>>   private final long   ts2       = ts1 + 100;
> >>>
> >>>   private final long   ts3       = ts1 + 100;
> >>>
> >>>   private final byte[] value1    = Bytes.toBytes("value1");
> >>>
> >>>   private final byte[] value2    = Bytes.toBytes("value2");
> >>>
> >>>   private final byte[] value3    = Bytes.toBytes("value3");
> >>>
> >>>   private void insert(final long ts, final byte[] value) throws
> >>> IOException
> >>>   {
> >>>       final HTable table =
> >>> IDMHBaseConfiguration.getTable(BigTableName.getSite());
> >>>       table.setAutoFlush(false);
> >>>       final Put put = new Put(rowKey);
> >>>       put.add(family, qualifier, ts, value);
> >>>       table.put(put);
> >>>   }
> >>>
> >>>   private void sleep()
> >>>   {
> >>>       try
> >>>       {
> >>>           Thread.sleep(1000);
> >>>       }
> >>>       catch (final InterruptedException e)
> >>>       {
> >>>           e.printStackTrace();
> >>>       }
> >>>   }
> >>>
> >>>   @Test
> >>>   public void testGetRowMultipleVersions() throws Exception
> >>>   {
> >>>       insert(ts1, value1);
> >>>       sleep();
> >>>       insert(ts2, value2);
> >>>       sleep();
> >>>       insert(ts3, value3);
> >>>       sleep();
> >>>
> >>>       // check getRow with multiple versions
> >>>       final HTable table =
> >>> IDMHBaseConfiguration.getTable(BigTableName.getSite());
> >>>       final Get get = new Get(rowKey);
> >>>       get.setMaxVersions();
> >>>       final Result r = table.get(get);
> >>>
> >>>       final List<KeyValue> list = r.list();
> >>>       for (final KeyValue kv : list)
> >>>       {
> >>>           System.err.println(kv.getKey());
> >>>           System.err.println(Bytes.toString(kv.getValue()));
> >>>       }
> >>>
> >>>       final NavigableMap<byte[], NavigableMap<byte[], NavigableMap<Long,
> >>> byte[]>>> map = r.getMap();
> >>>       final NavigableMap<byte[], NavigableMap<Long, byte[]>> familyMap =
> >>> map.get(family);
> >>>       final NavigableMap<Long, byte[]> versionMap =
> >>> familyMap.get(qualifier);
> >>>       for (final Map.Entry<Long, byte[]> entry : versionMap.entrySet())
> >>>       {
> >>>           System.err.println(entry.getKey());
> >>>           System.err.println(Bytes.toString(entry.getValue()));
> >>>       }
> >>>       //        assertTrue(versionMap.size() == 3);
> >>>
> >>>       //        assertTrue(value1 == versionMap.get(ts1));
> >>>       //        assertTrue(value2 == versionMap.get(ts2));
> >>>       //        assertTrue(value3 == versionMap.get(ts3));
> >>>
> >>>       //        table.delete(new Delete(rowKey));
> >>>       //        assertTrue(table.get(get).size() == 0);
> >>>       //        table.close();
> >>>   }
> >>>
> >>> On Thu, Feb 24, 2011 at 3:26 PM, Ryan Rawson <[email protected]> wrote:
> >>>
> >>>> Does the HTable object have setAutoFlush(false) turned on by any chance?
> >>>>
> >>>> On Wed, Feb 23, 2011 at 11:22 PM, 陈加俊 <[email protected]> wrote:
> >>>>> line 89:        final NavigableMap<byte[], NavigableMap<Long, byte[]>>
> >>>>> familyMap = map.get(family);
> >>>>> map is null ,
> >>>>> and strangely  I use r.list() instead,
> >>>>> final List<KeyValue> list = r.list();
> >>>>> r is null !
> >>>>>
> >>>>>
> >>>>> 2011/2/24 Ryan Rawson <[email protected]>
> >>>>>>
> >>>>>> Which line is line 89?
> >>>>>>
> >>>>>> Also it's preferable to do:
> >>>>>> assertEquals(3, versionMap.size());
> >>>>>> vs:
> >>>>>> assertTrue(versionMap.size() == 3);
> >>>>>>
> >>>>>> since the error messages from the former are more descriptive
> >>>>>> "expected 3 was 2".
> >>>>>>
> >>>>>> looking at the code it looks like it should work...
> >>>>>>
> >>>>>> On Wed, Feb 23, 2011 at 11:07 PM, 陈加俊 <[email protected]> wrote:
> >>>>>>> This is my test case ,but I get NPE some times .
> >>>>>>>
> >>>>>>> java.lang.NullPointerException
> >>>>>>> at
> >>>>>>>
> >>>>>>>
> >>>>
> >> com.uuwatch.idm.hbase.GetRowVersionsTest.testGetRowMultipleVersions(GetRowVersionsTest.java:89)
> >>>>>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> >>>>>>> at
> >>>>>>>
> >>>>>>>
> >>>>
> >> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> >>>>>>> at
> >>>>>>>
> >>>>>>>
> >>>>
> >> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> >>>>>>> at java.lang.reflect.Method.invoke(Method.java:597)
> >>>>>>> at
> >>>>>>>
> >>>>>>>
> >>>>
> >> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
> >>>>>>> at
> >>>>>>>
> >>>>>>>
> >>>>
> >> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
> >>>>>>> at
> >>>>>>>
> >>>>>>>
> >>>>
> >> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
> >>>>>>> at
> >>>>>>>
> >>>>>>>
> >>>>
> >> org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
> >>>>>>> at
> >>>>>>>
> >>>>>>>
> >>>>
> >> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76)
> >>>>>>> at
> >>>>>>>
> >>>>>>>
> >>>>
> >> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
> >>>>>>> at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
> >>>>>>> at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
> >>>>>>> at
> >> org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
> >>>>>>> at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
> >>>>>>> at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
> >>>>>>> at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
> >>>>>>> at
> >>>>>>>
> >>>>>>>
> >>>>
> >> org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:49)
> >>>>>>> at
> >>>>>>>
> >>>>>>>
> >>>>
> >> org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
> >>>>>>> at
> >>>>>>>
> >>>>>>>
> >>>>
> >> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
> >>>>>>> at
> >>>>>>>
> >>>>>>>
> >>>>
> >> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
> >>>>>>> at
> >>>>>>>
> >>>>>>>
> >>>>
> >> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
> >>>>>>> at
> >>>>>>>
> >>>>>>>
> >>>>
> >> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
> >>>>>>>
> >>>>>>> public class GetRowVersionsTest extends TestCase
> >>>>>>> {
> >>>>>>>   private final byte[] family    = Bytes.toBytes("log");
> >>>>>>>
> >>>>>>>   private final byte[] qualifier = Bytes.toBytes("siteUrl");
> >>>>>>>
> >>>>>>>   private final byte[] rowKey    = Bytes.toBytes(1);
> >>>>>>>
> >>>>>>>   private final HTable table     =
> >>>>>>> IDMHBaseConfiguration.getTable(BigTableName.getSite());
> >>>>>>>
> >>>>>>>   private final long   ts1       = 1298529542218L;
> >>>>>>>
> >>>>>>>   private final long   ts2       = ts1 + 100;
> >>>>>>>
> >>>>>>>   private final long   ts3       = ts1 + 100;
> >>>>>>>
> >>>>>>>   private final byte[] value1    = Bytes.toBytes("value1");
> >>>>>>>
> >>>>>>>   private final byte[] value2    = Bytes.toBytes("value2");
> >>>>>>>
> >>>>>>>   private final byte[] value3    = Bytes.toBytes("value3");
> >>>>>>>
> >>>>>>>   private void insert(final long ts, final byte[] value) throws
> >>>>>>> IOException
> >>>>>>>   {
> >>>>>>>       final Put put = new Put(rowKey);
> >>>>>>>       put.add(family, qualifier, ts, value);
> >>>>>>>       table.put(put);
> >>>>>>>   }
> >>>>>>>
> >>>>>>>   private void sleep()
> >>>>>>>   {
> >>>>>>>       try
> >>>>>>>       {
> >>>>>>>           Thread.sleep(1000);
> >>>>>>>       }
> >>>>>>>       catch (final InterruptedException e)
> >>>>>>>       {
> >>>>>>>           e.printStackTrace();
> >>>>>>>       }
> >>>>>>>   }
> >>>>>>>
> >>>>>>>   @Test
> >>>>>>>   public void testGetRowMultipleVersions() throws Exception
> >>>>>>>   {
> >>>>>>>       insert(ts1, value1);
> >>>>>>>       sleep();
> >>>>>>>       insert(ts2, value2);
> >>>>>>>       sleep();
> >>>>>>>       insert(ts3, value3);
> >>>>>>>       sleep();
> >>>>>>>
> >>>>>>>       // check getRow with multiple versions
> >>>>>>>       final Get get = new Get(rowKey);
> >>>>>>>       get.setMaxVersions();
> >>>>>>>       final Result r = table.get(get);
> >>>>>>>       final NavigableMap<byte[], NavigableMap<byte[],
> >>>>>>> NavigableMap<Long,
> >>>>>>> byte[]>>> map = r.getMap();
> >>>>>>>       final NavigableMap<byte[], NavigableMap<Long, byte[]>>
> >>>> familyMap
> >>>>>>> =
> >>>>>>> map.get(family);
> >>>>>>>       final NavigableMap<Long, byte[]> versionMap =
> >>>>>>> familyMap.get(qualifier);
> >>>>>>>       for (final Map.Entry<Long, byte[]> entry :
> >>>> versionMap.entrySet())
> >>>>>>>       {
> >>>>>>>           System.err.println(entry.getKey());
> >>>>>>>           System.err.println(Bytes.toString(entry.getValue()));
> >>>>>>>       }
> >>>>>>>       //        assertTrue(versionMap.size() == 3);
> >>>>>>>
> >>>>>>>       //        assertTrue(value1 == versionMap.get(ts1));
> >>>>>>>       //        assertTrue(value2 == versionMap.get(ts2));
> >>>>>>>       //        assertTrue(value3 == versionMap.get(ts3));
> >>>>>>>
> >>>>>>>       //        table.delete(new Delete(rowKey));
> >>>>>>>       //        assertTrue(table.get(get).size() == 0);
> >>>>>>>       //        table.close();
> >>>>>>>   }
> >>>>>>> }
> >>>>>>>
> >>>>>>>
> >>>>>>> On Thu, Feb 24, 2011 at 11:07 AM, Tatsuya Kawano
> >>>>>>> <[email protected]>wrote:
> >>>>>>>
> >>>>>>>> Hi Jiajun,
> >>>>>>>>
> >>>>>>>> Make sure you don't have the same timestamp on every versions of
> >>>> puts;
> >>>>>>>> try
> >>>>>>>> to put Thread.sleep() in your test(?) codes when necessary.
> >>>>>>>>
> >>>>>>>> You might not want to specify the timestamp by yourself but want
> >> to
> >>>> let
> >>>>>>>> HBase to store appropriate ones.
> >>>>>>>>
> >>>>>>>> --
> >>>>>>>> Tatsuya Kawano (Mr.)
> >>>>>>>> Tokyo, Japan
> >>>>>>>>
> >>>>>>>>
> >>>>>>>> On Feb 24, 2011, at 11:30 AM, Ryan Rawson <[email protected]>
> >>>> wrote:
> >>>>>>>>
> >>>>>>>>> There are test cases for this, the functionality DOES work,
> >>>> something
> >>>>>>>>> is
> >>>>>>>> up...
> >>>>>>>>>
> >>>>>>>>> Without full code and full descriptions of your tables,
> >> debugging
> >>>> is
> >>>>>>>>> harder than it needs to be.  It's probably a simple typo or
> >>>>>>>>> something,
> >>>>>>>>> check your code and table descriptions again. Many people rely
> >> on
> >>>> the
> >>>>>>>>> multi version query capabilities and it is very unlikely to be
> >>>> broken
> >>>>>>>>> in a released version of hbase.
> >>>>>>>>>
> >>>>>>>>> On Wed, Feb 23, 2011 at 6:27 PM, 陈加俊 <[email protected]>
> >> wrote:
> >>>>>>>>>> final List<KeyValue> list = result.list();
> >>>>>>>>>>          for (final KeyValue it : list)
> >>>>>>>>>>          {
> >>>>>>>>>>              System.out.println(Bytes.toString(it.getKey()));
> >>>>>>>>>>
> >> System.out.println(Bytes.toString(it.getValue()));
> >>>>>>>>>>          }
> >>>>>>>>>> I can only get the last version!  why ? Is there any testcase
> >> in
> >>>>>>>>>> Hbase?
> >>>>>>>>>>
> >>>>>>>>>> On Thu, Feb 24, 2011 at 9:56 AM, 陈加俊 <[email protected]>
> >>>> wrote:
> >>>>>>>>>>
> >>>>>>>>>>> /**
> >>>>>>>>>>>  * Create a sorted list of the KeyValue's in this result.
> >>>>>>>>>>>  *
> >>>>>>>>>>>  * @return The sorted list of KeyValue's.
> >>>>>>>>>>>  */
> >>>>>>>>>>> public List<KeyValue> list() {
> >>>>>>>>>>>   if(this.kvs == null) {
> >>>>>>>>>>>     readFields();
> >>>>>>>>>>>   }
> >>>>>>>>>>>   return isEmpty()? null: Arrays.asList(sorted());
> >>>>>>>>>>> }
> >>>>>>>>>>>
> >>>>>>>>>>> I will try it . Thank you very much!
> >>>>>>>>>>>
> >>>>>>>>>>> On Thu, Feb 24, 2011 at 9:45 AM, Buttler, David <
> >>>> [email protected]>
> >>>>>>>> wrote:
> >>>>>>>>>>>
> >>>>>>>>>>>> Result.list() ?
> >>>>>>>>>>>> Putting the hbase source into your IDE of choice (yay
> >> Eclipse!)
> >>>> is
> >>>>>>>> really
> >>>>>>>>>>>> helpful
> >>>>>>>>>>>>
> >>>>>>>>>>>> Dave
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>> -----Original Message-----
> >>>>>>>>>>>> From: 陈加俊 [mailto:[email protected]]
> >>>>>>>>>>>> Sent: Wednesday, February 23, 2011 5:42 PM
> >>>>>>>>>>>> To: [email protected]
> >>>>>>>>>>>> Cc: Buttler, David
> >>>>>>>>>>>> Subject: Re: I can't get many versions of the specified
> >>>> column,but
> >>>>>>>> only
> >>>>>>>>>>>> get the latest version of the specified column
> >>>>>>>>>>>>
> >>>>>>>>>>>> Thank you David !
> >>>>>>>>>>>>
> >>>>>>>>>>>> I alter the table schema as follow:
> >>>>>>>>>>>>
> >>>>>>>>>>>>> alter 'cjjIndexPageModify', {NAME => 'log' , VERSIONS => 5 ,
> >>>>>>>>>>>>> METHOD
> >>>>>>>> =>
> >>>>>>>>>>>> 'add'}
> >>>>>>>>>>>>
> >>>>>>>>>>>> How to iterate over KeyValues?  which method in Result?
> >>>>>>>>>>>>
> >>>>>>>>>>>> On Thu, Feb 24, 2011 at 9:27 AM, Buttler, David
> >>>>>>>>>>>> <[email protected]>
> >>>>>>>>>>>> wrote:
> >>>>>>>>>>>>
> >>>>>>>>>>>>> What is your table schema set to?  By default it holds 3
> >>>>>>>>>>>>> versions.
> >>>>>>>>>>>>> Also, you might iterating over KeyValues instead of using
> >> the
> >>>> Map
> >>>>>>>> since
> >>>>>>>>>>>> you
> >>>>>>>>>>>>> don't really care about the organization, just the time.
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> Dave
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> -----Original Message-----
> >>>>>>>>>>>>> From: 陈加俊 [mailto:[email protected]]
> >>>>>>>>>>>>> Sent: Wednesday, February 23, 2011 5:22 PM
> >>>>>>>>>>>>> To: [email protected]
> >>>>>>>>>>>>> Cc: Stack
> >>>>>>>>>>>>> Subject: Re: I can't get many versions of the specified
> >>>>>>>>>>>>> column,but
> >>>>>>>> only
> >>>>>>>>>>>> get
> >>>>>>>>>>>>> the latest version of the specified column
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> I execute it five times at diffrent time.
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> //put data by version
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> final Put p = new Put(key); // key
> >>>>>>>>>>>>> final long ts = System.currentTimeMillis();
> >>>>>>>>>>>>>     p.add(FAMILY, q1, ts,v1);
> >>>>>>>>>>>>>     p.add(FAMILY, q2, ts,v2);
> >>>>>>>>>>>>>     p.add(FAMILY, q3, ts,v3);
> >>>>>>>>>>>>>    table.put(p);
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> So I can get five versions ,right?
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> On Thu, Feb 24, 2011 at 2:06 AM, Stack <[email protected]>
> >>>> wrote:
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>> What do you get for a result?
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> You are only entering a single version of each column, a
> >>>> single
> >>>>>>>>>>>>>> version of FAMILY:q1, a single version FAMILY:q2, and a
> >>>>>>>>>>>>>> FAMILY:q3.
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> St.Ack
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> On Wed, Feb 23, 2011 at 2:54 AM, 陈加俊 <[email protected]
> >>>
> >>>>>>>>>>>>>> wrote:
> >>>>>>>>>>>>>>> I can't get many versions of the specified column,but only
> >>>> get
> >>>>>>>>>>>>>>> the
> >>>>>>>>>>>>> latest
> >>>>>>>>>>>>>>> version of the specified column. Is there anyone  help me?
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> //put data by version
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> final Put p = new Put(key); // key
> >>>>>>>>>>>>>>> final long ts = System.currentTimeMillis();
> >>>>>>>>>>>>>>>     p.add(FAMILY, q1, ts,v1);
> >>>>>>>>>>>>>>>     p.add(FAMILY, q2, ts,v2);
> >>>>>>>>>>>>>>>     p.add(FAMILY, q3, ts,v3);
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>    table.put(p);
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> //get all versions of data
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> final Get get = new Get(key);
> >>>>>>>>>>>>>>>         get.addFamily(FAMILY);
> >>>>>>>>>>>>>>>         get.setMaxVersions(10);
> >>>>>>>>>>>>>>>         final Result result = htable.get(get);
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>         final NavigableMap<byte[], NavigableMap<byte[],
> >>>>>>>>>>>>>>> NavigableMap<Long, byte[]>>> map = result.getMap();
> >>>>>>>>>>>>>>>         final Set<Entry<byte[], NavigableMap<byte[],
> >>>>>>>>>>>>>>> NavigableMap<Long, byte[]>>>> entrySet = map.entrySet();
> >>>>>>>>>>>>>>>         final Iterator<Entry<byte[], NavigableMap<byte[],
> >>>>>>>>>>>>>>> NavigableMap<Long, byte[]>>>> iterator = entrySet
> >>>>>>>>>>>>>>>                 .iterator();
> >>>>>>>>>>>>>>>         while (iterator.hasNext())
> >>>>>>>>>>>>>>>         {
> >>>>>>>>>>>>>>>             final Entry<byte[], NavigableMap<byte[],
> >>>>>>>>>>>>>>> NavigableMap<Long, byte[]>>> next = iterator.next();
> >>>>>>>>>>>>>>>
> >>>> System.out.println(Bytes.toString(next.getKey()));
> >>>>>>>>>>>>> //family
> >>>>>>>>>>>>>>>             for (final Entry<byte[], NavigableMap<Long,
> >>>>>>>>>>>>>>> byte[]>>
> >>>>>>>>>>>>>>> item : next.getValue().entrySet())
> >>>>>>>>>>>>>>>             {
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> System.out.println(Bytes.toString(item.getKey()));
> >>>>>>>>>>>>>>>                 for (final Entry<Long, byte[]> _item :
> >>>>>>>>>>>>>>> item.getValue().entrySet())
> >>>>>>>>>>>>>>>                 {
> >>>>>>>>>>>>>>>                     System.out.println(_item.getKey());
> >> //q
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>> System.out.println(Bytes.toString(_item.getValue()));
> >>>>>>>>>>>>>>> //value
> >>>>>>>>>>>>>>>                 }
> >>>>>>>>>>>>>>>             }
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>         }
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> --
> >>>>>>>>>>>>>>> Thanks & Best regards
> >>>>>>>>>>>>>>> jiajun
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> --
> >>>>>>>>>>>>> Thanks & Best regards
> >>>>>>>>>>>>> jiajun
> >>>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>> --
> >>>>>>>>>>>> Thanks & Best regards
> >>>>>>>>>>>> jiajun
> >>>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>> --
> >>>>>>>>>>> Thanks & Best regards
> >>>>>>>>>>> jiajun
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>> --
> >>>>>>>>>> Thanks & Best regards
> >>>>>>>>>> jiajun
> >>>>>>>>>>
> >>>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>> --
> >>>>>>> Thanks & Best regards
> >>>>>>> jiajun
> >>>>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>> --
> >>>>> Thanks & Best regards
> >>>>> jiajun
> >>>>>
> >>>>>
> >>>>
> >>>
> >>>
> >>>
> >>> --
> >>> Thanks & Best regards
> >>> jiajun
> >>>
> >>
> >
> >
> >
> > --
> > Thanks & Best regards
> > jiajun
> 
> 
> 
> -- 
> Thanks & Best regards
> jiajun
> 

Reply via email to