Hi Shen,

The first thing you need to verify is that you can switch to the
IdxRegion implementation without problems. I've just checked that the
following steps work on the PerformanceEvaluation tables. I would
suggest you backup your hbase production instance before attempting
this (or create and try it out on a sandbox instance)

* Stop hbase
* Edit  conf/hbase-env.sh file and add IHBASE to your classpath.
Here's an example which assumes you don't need to add anything else to
your classpath, make sure the HBASE_HOME is defined or simply
substiute it with the full path of hbase installation directory:
   export HBASE_CLASSPATH=(`find $HBASE_HOME/contrib/indexed -name
'*jar' | tr -s "\n" ":"`)

* Edit conf/hbase-site.xml and set IdxRegion to be the region implementation:

 <property>
     <name>hbase.hregion.impl</name>
     <value>org.apache.hadoop.hbase.regionserver.IdxRegion</value>
 </property>

* Propagate the configuration to all slaves
* Start HBASE


Next, modify the table you want to index using code similar to this:

    HBaseConfiguration conf = new HBaseConfiguration();

    HBaseAdmin admin = new HBaseAdmin(conf);
    admin.disableTable(TABLE_NAME);
    admin.modifyColumn(TABLE_NAME, FAMILY_NAME1, IDX_COLUMN_DESCRIPTOR1);
          ...
    admin.modifyColumn(TABLE_NAME, FAMILY_NAMEN, IDX_COLUMN_DESCRIPTORN);
  admin.enableTable(TABLE_NAME);

Wait for the table to get indexed. This may take a few minutes. Check
the master web page and verify your index definitions appear correctly
in the table description.

This is it. Please let me know how it goes.

Yoram




2010/2/26 ChingShen <chingshenc...@gmail.com>:
> Thanks, But I think I need the indexed HBase rather than transactional
> HBase.
>
> Shen
>
> 2010/2/26 <y_823...@tsmc.com>
>
>> You can try my code to create a index in the existing table.
>>
>> public void AddIdx2ExistingTable(String tablename,String
>> columnfamily,String idx_column) throws IOException {
>>            IndexedTableAdmin admin = null;
>>          admin = new IndexedTableAdmin(config);
>>          admin.addIndex(Bytes.toBytes(tablename), new
>> IndexSpecification(idx_column,
>>          Bytes.toBytes(columnfamily+":"+idx_column)));
>> }
>>
>>
>>
>>
>> Fleming Chiu(邱宏明)
>> 707-6128
>> y_823...@tsmc.com
>> 週一無肉日吃素救地球(Meat Free Monday Taiwan)
>>
>>
>>
>>
>>
>>                      ChingShen
>>                      <chingshenc...@gm        To:      hbase-user <
>> hbase-user@hadoop.apache.org>
>>                      ail.com>                 cc:      (bcc:
>> Y_823910/TSMC)
>>                                               Subject: [Indexed HBase] Can
>> I add index in an existing table?
>>                      2010/02/26 10:18
>>                      AM
>>                      Please respond to
>>                      hbase-user
>>
>>
>>
>>
>>
>>
>> Hi,
>>
>> I got http://issues.apache.org/jira/browse/HBASE-2037 that can create a
>> new
>> table with index, but can I add index in an existing table?
>> Any code examples?
>>
>> Thanks.
>>
>> Shen
>>
>>
>>
>>
>>
>>  ---------------------------------------------------------------------------
>>                                                         TSMC PROPERTY
>>  This email communication (and any attachments) is proprietary information
>>  for the sole use of its
>>  intended recipient. Any unauthorized review, use or distribution by anyone
>>  other than the intended
>>  recipient is strictly prohibited.  If you are not the intended recipient,
>>  please notify the sender by
>>  replying to this email, and then delete this email and any copies of it
>>  immediately. Thank you.
>>
>>  ---------------------------------------------------------------------------
>>
>>
>>
>>
>
>
> --
> *****************************************************
> Ching-Shen Chen
> Advanced Technology Center,
> Information & Communications Research Lab.
> E-mail: chenchings...@itri.org.tw
> Tel:+886-3-5915542
> *****************************************************
>

Reply via email to