Home | About | Sematext search-lucene.com search-hadoop.com
 Search Hadoop and all its subprojects:

Switch to Threaded View
HBase, mail # user - How to get coprocessor list by client API


Copy link to this message
-
Re: How to get coprocessor list by client API
Kyle Lin 2013-01-24, 03:53
Hello JM

It really works! Thanks a lot.

Hello Jack

    For each table, it needs to use htable.getTableDescriptor().

    hbaseAdmin.getTableDescriptor only gets -ROOT- and .META.

    So I use the code as follows,

HTable htable = new HTable(config, tableName);
HTableDescriptor htableDesc = *htable.getTableDescriptor()*;
Map<ImmutableBytesWritable, ImmutableBytesWritable> maps htableDesc.getValues();
Set<Entry<ImmutableBytesWritable, ImmutableBytesWritable>> sets maps.entrySet();
for (Map.Entry<ImmutableBytesWritable, ImmutableBytesWritable> entrySet :
sets) {
String stringKey = Bytes.toString(entrySet.getKey().get());
String stringValue = Bytes.toString(entrySet.getValue().get());
System.out.println("key:" + stringKey + ", value:" + stringValue);
}
htable.close();

Kyle

2013/1/24 jack <[EMAIL PROTECTED]>

> Hi, Kyle
>
>         Configuration config = HBaseConfiguration.create();
>         config.set("hbase.zookeeper.quorum", "host3");
>         config.set("hbase.zookeeper.property.clientPort", "2181");
>
>         config.set("fs.default.name", "hdfs://host3:9000");
>         config.set("mapred.job.tracker", "hdfs://host3:9001");
>
>         HBaseAdmin hbaseAdmin = new HBaseAdmin(config);
>
>         HTableDescriptor htableDescriptor > hbaseAdmin.getTableDescriptor(Bytes.toBytes("table21"));
>
>         Map<ImmutableBytesWritable, ImmutableBytesWritable> maps > htableDescriptor.getValues();
>         Set<Entry<ImmutableBytesWritable, ImmutableBytesWritable>> sets > maps.entrySet();
>         Iterator<Entry<ImmutableBytesWritable, ImmutableBytesWritable>> it
> = sets.iterator();
>         while(it.hasNext()){
>                 Entry<ImmutableBytesWritable, ImmutableBytesWritable>
> keys = it.next();
>                 ImmutableBytesWritable ibwKey = keys.getKey();
>                 ImmutableBytesWritable ibwValue = keys.getValue();
>                 String stringKey = Bytes.toString(ibwKey.get());
>                 String stringValue = Bytes.toString(ibwValue.get());
>                 System.out.println(stringKey + "    " + stringValue);
>         }
>         hbaseAdmin.close();
>
>
>
>
> ________________________________
>  寄件者: Kyle Lin <[EMAIL PROTECTED]>
> 收件者: [EMAIL PROTECTED]
> 寄件日期: 2013/1/23 (週三) 4:18 PM
> 主旨: How to get coprocessor list by client API
>
> Hi, Everyone
>
>     I need to know What coprocessors registered in a HTable. But, in Class
> HTableDescriptor, I can only find
> *addCoprocessor<
> http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/HTableDescriptor.html#addCoprocessor(java.lang.String)
> >
> *, *hasCoprocessor<
> http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/HTableDescriptor.html#hasCoprocessor(java.lang.String)
> >
> * ..etc. How can I use Client API to get the coprocessor information just
> like Typing "describe table_name" in HBase Shell as follows?
>
>
> hbase(main):002:0> describe 'table21'
> DESCRIPTION
>                   ENABLED
> {NAME => 'table21', *coprocessor$1 =>
> 'hdfs://host3:9000/sumCoprocessor.jar|idv.jack.endpoint true
>                                *
> * .SumDataEndpoint||'*, FAMILIES => [{NAME => 'cf', DATA_BLOCK_ENCODING =>
> 'NONE', BLOOMFILTER
> => 'NONE', REPLICATION_SCOPE => '0', VERSIONS => '3', COMPRESSION =>
> 'NONE', MIN_VERSIONS =>
>   '0', TTL => '2147483647', KEEP_DELETED_CELLS => 'false', BLOCKSIZE =>
> '65536', IN_MEMORY =>
>   'false', ENCODE_ON_DISK => 'true', BLOCKCACHE => 'true'}]}
>
> 1 row(s) in 0.0210 seconds
>
> Kyle
>