You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hbase.apache.org by N Dm <ni...@gmail.com> on 2013/06/02 19:30:04 UTC

how to use HBase Shell formatter?

hi, folks,

Can someone point me to a sample about how to use 'formatter.rb' inside
hbase ruby code? The version I am using is 94.3

I am trying to implement a 'list_replicated_table' command on hbase shell,
and leveraging 'formatter" to lay out the output. The code segement is
like:

        formatter.header(["TABLE","COLUMNFAMILY", "TARGET_CLUSTER"])
        ......
        list.each do |e|
          formatter.row([e[0],e[1],e[2]])
        end
        .....
        formatter.footer(now)

where e[0],e[1], and e[2] are entries from a String array. I was hoping to
have a nice output with column aligned. However, I got the output with a
blank as delimiter.
hbase(main):002:0> list_replicated_tables
 TABLE COLUMNFAMILY TARGET_CLUSTER
 scores course hdtest017.svl.ibm.com:2181:/hbase
 t3_dn cf1 hdtest017.svl.ibm.com:2181:/hbase
 usertable family hdtest017.svl.ibm.com:2181:/hbase

I am looking for something like:
TABLE          COLUMNFAMILY  TARGET_CLUSTER
scores         course        hdtest017.svl.ibm.com:2181:/hbase

I was following the way 'list_peers' did, seems don't work over there
either.

I also changed the formatter input as:
formatter.header(["TABLE","COLUMNFAMILY", "TARGET_CLUSTER"],[18,18,48])
formatter.row([e[0],e[1],e[2]],true,[18,18,48])
which doesn't change the output either.


The 'scan.rb' works fine, however, I can't tell what's the differnce.

Any suggestion is really appreciated. Thanks!

Demai

Re: how to use HBase Shell formatter?

Posted by Demai Ni <ni...@gmail.com>.
Ted,

Thanks for pointing me the direction. I will looking into the enhancement

Demai on the run

On Jun 2, 2013, at 1:43 PM, Ted Yu <yu...@gmail.com> wrote:

> Looking at the following from formatter.rb:
>            col1width = (not widths or widths.length == 0) ? @max_width / 4
> : @max_width * widths[0] / 100
>            col2width = (not widths or widths.length < 2) ? @max_width -
> col1width - 2 : @max_width * widths[1] / 100 - 2
> 
> It seems the widths argument only expects two fields which should be
> percentage of widths for columns 1 and 2, respectively.
> 
> If you want 3 columns to be displayed, you should enhance formatter.rb
> 
> Cheers
> 
> On Sun, Jun 2, 2013 at 10:30 AM, N Dm <ni...@gmail.com> wrote:
> 
>> hi, folks,
>> 
>> Can someone point me to a sample about how to use 'formatter.rb' inside
>> hbase ruby code? The version I am using is 94.3
>> 
>> I am trying to implement a 'list_replicated_table' command on hbase shell,
>> and leveraging 'formatter" to lay out the output. The code segement is
>> like:
>> 
>>        formatter.header(["TABLE","COLUMNFAMILY", "TARGET_CLUSTER"])
>>        ......
>>        list.each do |e|
>>          formatter.row([e[0],e[1],e[2]])
>>        end
>>        .....
>>        formatter.footer(now)
>> 
>> where e[0],e[1], and e[2] are entries from a String array. I was hoping to
>> have a nice output with column aligned. However, I got the output with a
>> blank as delimiter.
>> hbase(main):002:0> list_replicated_tables
>> TABLE COLUMNFAMILY TARGET_CLUSTER
>> scores course hdtest017.svl.ibm.com:2181:/hbase
>> t3_dn cf1 hdtest017.svl.ibm.com:2181:/hbase
>> usertable family hdtest017.svl.ibm.com:2181:/hbase
>> 
>> I am looking for something like:
>> TABLE          COLUMNFAMILY  TARGET_CLUSTER
>> scores         course        hdtest017.svl.ibm.com:2181:/hbase
>> 
>> I was following the way 'list_peers' did, seems don't work over there
>> either.
>> 
>> I also changed the formatter input as:
>> formatter.header(["TABLE","COLUMNFAMILY", "TARGET_CLUSTER"],[18,18,48])
>> formatter.row([e[0],e[1],e[2]],true,[18,18,48])
>> which doesn't change the output either.
>> 
>> 
>> The 'scan.rb' works fine, however, I can't tell what's the differnce.
>> 
>> Any suggestion is really appreciated. Thanks!
>> 
>> Demai
>> 

Re: how to use HBase Shell formatter?

Posted by Ted Yu <yu...@gmail.com>.
Looking at the following from formatter.rb:
            col1width = (not widths or widths.length == 0) ? @max_width / 4
: @max_width * widths[0] / 100
            col2width = (not widths or widths.length < 2) ? @max_width -
col1width - 2 : @max_width * widths[1] / 100 - 2

It seems the widths argument only expects two fields which should be
percentage of widths for columns 1 and 2, respectively.

If you want 3 columns to be displayed, you should enhance formatter.rb

Cheers

On Sun, Jun 2, 2013 at 10:30 AM, N Dm <ni...@gmail.com> wrote:

> hi, folks,
>
> Can someone point me to a sample about how to use 'formatter.rb' inside
> hbase ruby code? The version I am using is 94.3
>
> I am trying to implement a 'list_replicated_table' command on hbase shell,
> and leveraging 'formatter" to lay out the output. The code segement is
> like:
>
>         formatter.header(["TABLE","COLUMNFAMILY", "TARGET_CLUSTER"])
>         ......
>         list.each do |e|
>           formatter.row([e[0],e[1],e[2]])
>         end
>         .....
>         formatter.footer(now)
>
> where e[0],e[1], and e[2] are entries from a String array. I was hoping to
> have a nice output with column aligned. However, I got the output with a
> blank as delimiter.
> hbase(main):002:0> list_replicated_tables
>  TABLE COLUMNFAMILY TARGET_CLUSTER
>  scores course hdtest017.svl.ibm.com:2181:/hbase
>  t3_dn cf1 hdtest017.svl.ibm.com:2181:/hbase
>  usertable family hdtest017.svl.ibm.com:2181:/hbase
>
> I am looking for something like:
> TABLE          COLUMNFAMILY  TARGET_CLUSTER
> scores         course        hdtest017.svl.ibm.com:2181:/hbase
>
> I was following the way 'list_peers' did, seems don't work over there
> either.
>
> I also changed the formatter input as:
> formatter.header(["TABLE","COLUMNFAMILY", "TARGET_CLUSTER"],[18,18,48])
> formatter.row([e[0],e[1],e[2]],true,[18,18,48])
> which doesn't change the output either.
>
>
> The 'scan.rb' works fine, however, I can't tell what's the differnce.
>
> Any suggestion is really appreciated. Thanks!
>
> Demai
>