You need to disable your table in order to alter it. Also, instead of
using admin.addColumn, simply add it directly to the HTableDescriptor
using 
http://hbase.apache.org/docs/r0.20.6/api/org/apache/hadoop/hbase/HTableDescriptor.html#addFamily(org.apache.hadoop.hbase.HColumnDescriptor)

J-D

2010/10/6 Petrucci Andreas <[email protected]>:
>
> Hello there, i have compiled the HBase source code and i;m running
> locally the HMaster. However when i try to create a table and insert
> rows with an HBaseClient there are some problems. I would appreciate
> your help , thanks in advance.
>
>
>
> HBaseClient :
>
>
>
>    Configuration config = new HBaseConfiguration().create();
>
>    HBaseAdmin admin = new HBaseAdmin(config);
>
>    System.out.println("Is Master running?? " + admin.isMasterRunning());
>
>    try{
>
>        admin.createTable(new HTableDescriptor("myLittleHBaseTable"));
>
>    }catch(org.apache.hadoop.hbase.TableExistsException e){
>
>        System.out.println("Propably the requested table already exists!!");
>
>    }
>
>    try{
>
>        admin.addColumn("myLittleHBaseTable", new 
> HColumnDescriptor(Bytes.toBytes("myLittleFamily")));
>
>    }catch(org.apache.hadoop.hbase.InvalidFamilyOperationException e){
>
>        System.out.println("Propably there is some fault with column!!");
>
>    }
>
>    HTableDescriptor tables [] ;
>
>    tables = admin.listTables();
>
>    System.out.println("Existing tables : ");
>
>    for(int i =0; i<tables.length;i++){
>
>        System.out.println(tables[i].toString());
>
>    }
>
>    HTable table = new HTable(config,"myLittleHBaseTable");
>
>    Put p = new Put(Bytes.toBytes("myLittleRow"));
>
>    p.add(Bytes.toBytes("myLittleFamily"), 
> Bytes.toBytes("myLittleQualifier"),Bytes.toBytes("Some Value"));
>
>    table.put(p);
>
>
>
>  The output is below :
>
>
>
> 010-10-06 17:57:05,507 INFO  [main] zookeeper.ZKUtil(196):
> hconnection-0x12b81acb4fc000d Set watcher on existing znode
> /hbase/root-region-server
>
> 2010-10-06 17:57:05,510 DEBUG [main] zookeeper.ZKUtil(493):
> hconnection-0x12b81acb4fc000d Retrieved 15 bytes of data from znode
> /hbase/root-region-server and set a watcher
>
> 2010-10-06 17:57:05,512 INFO  [main] zookeeper.ZKUtil(196):
> hconnection-0x12b81acb4fc000d Set watcher on existing znode
> /hbase/unassigned/1028785192
>
> 2010-10-06 17:57:05,579 DEBUG [main]
> client.HConnectionManager$HConnectionImplementation(871): Cached
> location for .META.,,1.1028785192 is dante:40601
>
> Existing tables :
>
> {NAME => 'myLittleHBaseTable', FAMILIES => [{NAME =>
> 'myLittleFamily', BLOOMFILTER => 'NONE', REPLICATION_SCOPE => '0',
>  COMPRESSION => 'NONE', VERSIONS => '3', TTL => '2147483647',
> BLOCKSIZE => '65536', IN_MEMORY => 'false', BLOCKCACHE =>
> 'true'}]}
>
> 2010-10-06 17:57:05,594 DEBUG [main]
> client.HConnectionManager$HConnectionImplementation(757): Cache hit for
> row <> in tableName .META.: location server dante:40601, location
> region name .META.,,1.1028785192
>
> 2010-10-06 17:57:05,604 DEBUG [main]
> client.HConnectionManager$HConnectionImplementation(871): Cached
> location for
> myLittleHBaseTable,,1286370990893.3781dd248683babf07fcb0d030da7d21. is
> dante:40601
>
> 2010-10-06 17:57:05,605 DEBUG [main]
> client.HConnectionManager$HConnectionImplementation(757): Cache hit for
> row <> in tableName myLittleHBaseTable: location server
> dante:40601, location region name
> myLittleHBaseTable,,1286370990893.3781dd248683babf07fcb0d030da7d21.
>
> 2010-10-06 17:57:05,611 DEBUG [main] 
> client.HConnectionManager$HConnectionImplementation(1144): Failed all from 
> dante:40601
>
> java.util.concurrent.ExecutionException:
> org.apache.hadoop.hbase.regionserver.NoSuchColumnFamilyException:
> org.apache.hadoop.hbase.regionserver.NoSuchColumnFamilyException: Column
>  family myLittleFamily does not exist in region
> myLittleHBaseTable,,1286370990893.3781dd248683babf07fcb0d030da7d21. in
> table {NAME => 'myLittleHBaseTable', FAMILIES => []}
>
>    at 
> org.apache.hadoop.hbase.regionserver.HRegion.checkFamily(HRegion.java:2928)
>
>    at 
> org.apache.hadoop.hbase.regionserver.HRegion.checkFamilies(HRegion.java:1660)
>
>    at org.apache.hadoop.hbase.regionserver.HRegion.put(HRegion.java:1597)
>
>    at org.apache.hadoop.hbase.regionserver.HRegion.put(HRegion.java:1260)
>
>    at 
> org.apache.hadoop.hbase.regionserver.HRegionServer.put(HRegionServer.java:1518)
>
>    at 
> org.apache.hadoop.hbase.regionserver.HRegionServer.multi(HRegionServer.java:2318)
>
>    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.apache.hadoop.hbase.ipc.HBaseRPC$Server.call(HBaseRPC.java:561)
>
>    at 
> org.apache.hadoop.hbase.ipc.HBaseServer$Handler.run(HBaseServer.java:1025)
>
>
>
>    at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:222)
>
>    at java.util.concurrent.FutureTask.get(FutureTask.java:83)
>
>    at 
> org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.processBatch(HConnectionManager.java:1118)
>
>    at
> org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.processBatchOfPuts(HConnectionManager.java:1197)
>
>    at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:765)
>
>    at org.apache.hadoop.hbase.client.HTable.doPut(HTable.java:637)
>
>    at org.apache.hadoop.hbase.client.HTable.put(HTable.java:622)
>
>    at MyLittleHBaseClient.main(MyLittleHBaseClient.java:63)
>
> Caused by:
> org.apache.hadoop.hbase.regionserver.NoSuchColumnFamilyException:
> org.apache.hadoop.hbase.regionserver.NoSuchColumnFamilyException: Column
>  family myLittleFamily does not exist in region
> myLittleHBaseTable,,1286370990893.3781dd248683babf07fcb0d030da7d21. in
> table {NAME => 'myLittleHBaseTable', FAMILIES => []}
>
>    at 
> org.apache.hadoop.hbase.regionserver.HRegion.checkFamily(HRegion.java:2928)
>
>    at 
> org.apache.hadoop.hbase.regionserver.HRegion.checkFamilies(HRegion.java:1660)
>
>    at org.apache.hadoop.hbase.regionserver.HRegion.put(HRegion.java:1597)
>
>    at org.apache.hadoop.hbase.regionserver.HRegion.put(HRegion.java:1260)
>
>    at 
> org.apache.hadoop.hbase.regionserver.HRegionServer.put(HRegionServer.java:1518)
>
>    at 
> org.apache.hadoop.hbase.regionserver.HRegionServer.multi(HRegionServer.java:2318)
>
>    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.apache.hadoop.hbase.ipc.HBaseRPC$Server.call(HBaseRPC.java:561)
>
>    at 
> org.apache.hadoop.hbase.ipc.HBaseServer$Handler.run(HBaseServer.java:1025)
>
>
>
>    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
>
>    at 
> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
>
>    at 
> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
>
>    at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
>
>    at 
> org.apache.hadoop.hbase.RemoteExceptionHandler.decodeRemoteException(RemoteExceptionHandler.java:96)
>
>    at
> org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.translateException(HConnectionManager.java:1215)
>
>    at
> org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.getRegionServerWithoutRetries(HConnectionManager.java:958)
>
>    at 
> org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation$4.call(HConnectionManager.java:1028)
>
>    at 
> org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation$4.call(HConnectionManager.java:1)
>
>    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
>
>    at java.util.concurrent.FutureTask.run(FutureTask.java:138)
>
>    at 
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>
>    at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>
>    at java.lang.Thread.run(Thread.java:619)
>
> Exception in thread "main"
> org.apache.hadoop.hbase.regionserver.NoSuchColumnFamilyException:
> org.apache.hadoop.hbase.regionserver.NoSuchColumnFamilyException: Column
>  family myLittleFamily does not exist in region
> myLittleHBaseTable,,1286370990893.3781dd248683babf07fcb0d030da7d21. in
> table {NAME => 'myLittleHBaseTable', FAMILIES => []}
>
>    at 
> org.apache.hadoop.hbase.regionserver.HRegion.checkFamily(HRegion.java:2928)
>
>    at 
> org.apache.hadoop.hbase.regionserver.HRegion.checkFamilies(HRegion.java:1660)
>
>    at org.apache.hadoop.hbase.regionserver.HRegion.put(HRegion.java:1597)
>
>    at org.apache.hadoop.hbase.regionserver.HRegion.put(HRegion.java:1260)
>
>    at 
> org.apache.hadoop.hbase.regionserver.HRegionServer.put(HRegionServer.java:1518)
>
>    at 
> org.apache.hadoop.hbase.regionserver.HRegionServer.multi(HRegionServer.java:2318)
>
>    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.apache.hadoop.hbase.ipc.HBaseRPC$Server.call(HBaseRPC.java:561)
>
>    at 
> org.apache.hadoop.hbase.ipc.HBaseServer$Handler.run(HBaseServer.java:1025)
>
>
>
>    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
>
>    at 
> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
>
>    at 
> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
>
>    at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
>
>    at 
> org.apache.hadoop.hbase.RemoteExceptionHandler.decodeRemoteException(RemoteExceptionHandler.java:96)
>
>    at
> org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.translateException(HConnectionManager.java:1215)
>
>    at
> org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.getRegionServerWithoutRetries(HConnectionManager.java:958)
>
>    at 
> org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation$4.call(HConnectionManager.java:1028)
>
>    at 
> org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation$4.call(HConnectionManager.java:1)
>
>    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
>
>    at java.util.concurrent.FutureTask.run(FutureTask.java:138)
>
>    at 
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>
>    at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>
>    at java.lang.Thread.run(Thread.java:619)
>
> 2010-10-06 17:57:05,615 DEBUG [HCM.shutdownHook]
> client.HConnectionManager$HConnectionImplementation(1014): Closed
> zookeeper sessionid=0x12b81acb4fc000d
>
>
>
>
>
> Do you have any ideas? thanks in advance

Reply via email to