Hi,
I checked out Hadoop (including HBase) from its Subversion repository today,
build it successfully (on Cygwin) and started HBase in "local" mode.
Then I took your little example program from the Wiki and it crashes at the
last line:
HBaseConfiguration conf = new HBaseConfiguration();
HTableDescriptor desc = new HTableDescriptor("test");
desc.addFamily(new HColumnDescriptor("content:"));
HBaseAdmin admin = new HBaseAdmin(conf);
admin.createTable(desc);
...and I get the following stacktrace:
java.io.IOException: java.io.IOException:
java.util.NoSuchElementException
at java.util.TreeMap.key(TreeMap.java:1206)
at java.util.TreeMap$NavigableSubMap.lastKey(TreeMap.java:1435)
at
java.util.Collections$SynchronizedSortedMap.lastKey(Collections.java:2125)
at org.apache.hadoop.hbase.HMaster.createTable(HMaster.java:2460)
at org.apache.hadoop.hbase.HMaster.createTable(HMaster.java:2424)
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.ipc.RPC$Server.call(RPC.java:379)
at org.apache.hadoop.ipc.Server$Handler.run(Server.java:596)
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:82)
at
org.apache.hadoop.hbase.HBaseAdmin.createTableAsync(HBaseAdmin.java:150)
at
org.apache.hadoop.hbase.HBaseAdmin.createTable(HBaseAdmin.java:119)
at Test.main(Test.java:19)
After doing a little debugging I found the culprit line in
org.apache.hadoop.hbase.HMaster:
MetaRegion m = (onlineMetaRegions.containsKey(newRegion.getRegionName())
?
onlineMetaRegions.get(newRegion.getRegionName()) :
onlineMetaRegions.get(onlineMetaRegions.headMap(
newRegion.getTableDesc().getName()).lastKey()));
Looking at that line and its Taking out the single statement
onlineMetaRegions.containsKey(newRegion.getRegionName()) --> false
onlineMetaRegions.get(newRegion.getRegionName()) --> null
newRegion.getTableDesc().getName() --> test
onlineMetaRegions.headMap(newRegion.getTableDesc().getName()) --> {}
onlineMetaRegions.headMap(newRegion.getTableDesc().getName()).lastKey()
--> *CRASH*
Does anybody else experience that? ...or is there even a solution for that?
BTW: The same happens when I use the HBase shell... When I type "create
table test (test);" I get the message "java.util.NoSuchElementException"
also.
Cheers,
Holger
--
View this message in context:
http://www.nabble.com/NoSuchElementException-when-creating-a-table-tf4734280.html#a13538133
Sent from the Hadoop Users mailing list archive at Nabble.com.