hbase-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From stack <st...@duboce.net>
Subject Re: Reading table sequentially...
Date Wed, 13 Jan 2010 05:51:46 GMT
On Tue, Jan 12, 2010 at 9:32 PM, Something Something <
mailinglists19@gmail.com> wrote:

> Thanks for the explanation.  So as per the link you provided the list()
> method would return a sorted list, correct?
>
>
Thats what it says in the javadoc.



> About the 2nd point, I am using result.getFamilyMap() which returns
> NavigableMap which extends SortedMap (as per
>
> http://java.sun.com/javase/6/docs/api/java/util/NavigableMap.html?is-external=true
> ),
> so I guess the returned Map would be sorted by key values, so I am safe
> there as well, correct?
>

Yes.  That sounds right.

The raw method is there so applications that can deal, can get the raw
results without client machinations getting in the way.

St.Ack



>
>
> On Tue, Jan 12, 2010 at 4:46 PM, stack <stack@duboce.net> wrote:
>
> > On Tue, Jan 12, 2010 at 2:01 PM, Something Something <
> > mailinglists19@gmail.com> wrote:
> >
> > > All the Keys returned by this code are guaranteed to be in order by the
> > key
> > > values, correct?
> > >
> >
> > No.  Explicitly, the order is NOT guaranteed, for performance reasons (I
> > don't see this in the javadoc.  It should be there).  If just getting
> > latest
> > version from a set of columns, I believe it will come across in the right
> > order but not guaranteed.  To get a guaranteed sorted order, call
> >
> >
> http://hadoop.apache.org/hbase/docs/current/api/org/apache/hadoop/hbase/client/Result.html#sorted()instead
> <
> http://hadoop.apache.org/hbase/docs/current/api/org/apache/hadoop/hbase/client/Result.html#sorted%28%29instead
> >
> > of the raw() method.  The sort will be done client-side.
> >
> >
> > >
> > > Also, for some other table I am retrieving all column names for a
> > > particular
> > > key, and those all seem to be in the correct order as well.  Is this
> > always
> > > guaranteed?
> > >
> >
> >  Call sort if you need guarantee.
> >
> > St.Ack
> >
> >
> >
> >
> >
> >
> >
> > >
> > > On Tue, Jan 12, 2010 at 11:12 AM, stack <stack@duboce.net> wrote:
> > >
> > > > Setup the scanner and next it as you did previous.  Then on the
> Result
> > > > object, do something like:
> > > >
> > > > for (KeyValue kv: result.raw()) {
> > > >  System.out.println(Bytes.toString(kv.getRow()) + " " +
> > > > Bytes.toString(kv.getValue()));
> > > > }
> > > >
> > > > St.Ack
> > > >
> > > > On Tue, Jan 12, 2010 at 10:24 AM, Something Something <
> > > > mailinglists19@gmail.com> wrote:
> > > >
> > > > > Sorry.  That was a typo.  In any case, it seems like I am using the
> > > wrong
> > > > > API.
> > > > >
> > > > > Here's what my table contains:
> > > > >
> > > > >
> > > > >  ABC_111                     column=info:estimate,
> > > > timestamp=1263319888463,
> > > > > value=179.59
> > > > >  ABC_222                     column=info:estimate,
> > > > timestamp=1263319888463,
> > > > > value=191.50
> > > > >  ABC_333                     column=info:estimate,
> > > > timestamp=1263319888463,
> > > > > value=180.65
> > > > >  ABC_444                     column=info:estimate,
> > > > timestamp=1263319888463,
> > > > > value=183.63
> > > > >  & so on....
> > > > >
> > > > >
> > > > > I want to retrieve:
> > > > >
> > > > > ABC_111  179.59
> > > > > ABC_222  191.50
> > > > > ABC_333  180.65
> > > > > ABC_444  183.63
> > > > > & so on...
> > > > >
> > > > > What API should I use?  Please let me know.  Thanks for your help.
> > > > >
> > > > >
> > > > > On Tue, Jan 12, 2010 at 9:36 AM, stack <stack@duboce.net> wrote:
> > > > >
> > > > > > See below:
> > > > > >
> > > > > > On Tue, Jan 12, 2010 at 9:12 AM, Something Something <
> > > > > > mailinglists19@gmail.com> wrote:
> > > > > > >
> > > > > > >            NavigableMap<byte[], NavigableMap<byte[],
> > > > NavigableMap<Long,
> > > > > > > byte[]>>> map = result.getMap();
> > > > > > >
> > > > > >
> > > > > > Above returns a map keyed by families:
> > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> http://hadoop.apache.org/hbase/docs/current/api/org/apache/hadoop/hbase/client/Result.html#getMap%28%29
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > > >            for (Map.Entry<byte[], NavigableMap<byte[],
> > > > > NavigableMap<Long,
> > > > > > > byte[]>>> entry : map.entrySet()) {
> > > > > > >            byte[] key = entry.getKey();
> > > > > > >
> > > > > >
> > > > > > This is family name, not key.
> > > > > >
> > > > > >
> > > > > >
> > > > > > >            *LOG.info("key = " + Bytes.toString(key));*
> > > > > > >            NavigableMap<byte[], NavigableMap<Long,
byte[]>>
> value
> > =
> > > > > > > entry.getValue();
> > > > > > >
> > > > > >
> > > > > > This is a map keyed by column qualifiers.
> > > > > >
> > > > > >
> > > > > >
> > > > > > >              for (Entry<byte[], NavigableMap<Long,
byte[]>>
> > entry1
> > > :
> > > > > > > value.entrySet()) {
> > > > > > >                  byte[] key1 = entry1.getKey();
> > > > > > >                  *LOG.info("key1 = " + Bytes.toString(key1));*
> > > > > > >
> > > > > >
> > > > > >
> > > > > > This is the family qualifier.
> > > > > >
> > > > > >
> > > > > >
> > > > > > >                  NavigableMap<byte[], NavigableMap<Long,
> byte[]>>
> > > > > value1
> > > > > > =
> > > > > > > entry.getValue();
> > > > > > >
> > > > > >
> > > > > >
> > > > > > I do not think you intended to do this.  I think you meant
> entry1,
> > > not
> > > > > > 'entry' and map type should be NavigableMap<Long, byte[]>
rather
> > than
> > > > > > above.
> > > > > >
> > > > > > St.Ack
> > > > > >
> > > > > >
> > > > > >
> > > > > > >                  for (Entry<byte[], NavigableMap<Long,
byte[]>>
> > > > entry2
> > > > > :
> > > > > > > value1.entrySet()) {
> > > > > > >                      String key2 =
> > Bytes.toString(entry2.getKey());
> > > > > > >                      *LOG.info("key2 = " + key2);*
> > > > > > >
> > > > > > >                  }
> > > > > > >              }
> > > > > > >            }
> > > > > > >        }
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message