Is your comparator on the region server's classpath? Else it won't be able to guess what that comparator looks like :)
Also your region server log should tell you it's not able to find CustomComparator. J-D On Fri, Dec 30, 2011 at 12:56 AM, Nageswaran Surendhar <[email protected]> wrote: > public class CustomComparator extends WritableByteArrayComparable > { > > final CimKeyType cimKeyType; > final byte[] value; > > public CustomComparator(byte[] value, CimKeyType cimKeyType) > { > super(value); > this.value = value; > this.cimKeyType = cimKeyType; > } > > @Override > public int compareTo(byte[] value) > { > int differenceValue; > > switch (cimKeyType) > { > case INTEGER: > differenceValue = Bytes.toInt(this.value) - Bytes.toInt(value); > break; > case LONG: > differenceValue = (int) (Bytes.toLong(this.value) - > Bytes.toLong(value)); > break; > case DOUBLE: > differenceValue = (int) (Bytes.toDouble(this.value) - > Bytes.toDouble(value)); > break; > case STRING: > default: > differenceValue = > Bytes.toString(this.value).compareTo(Bytes.toString(value)); > } > > System.out.println("differenceValue : " +differenceValue); > > return differenceValue; > } > } > > > > CustomComparator comparator = new CustomComparator(filterValue, > lField.getCimKeyType()); > //BinaryComparator comparator = new BinaryComparator(filterValue); > > SingleColumnValueFilter singleColumnValueFilter = new > SingleColumnValueFilter(Bytes.toBytes(familyAndCol[0]), > Bytes.toBytes(familyAndCol[1]), compareOperator, comparator); > > if (myNumberOfVersions > 0) > get.setMaxVersions(myNumberOfVersions); > > > if (filterList != null) > get.setFilter(filterList); > > Result result = hTable.get(get); > > > I m using the above code inside hadoop-mapper. I had make it jar and placed > it inside both hadoop/lib and hbase/lib. > > If i use BinaryComparator, i m not getting any exception, and error. But if > I used CustomComparator, I m getting the follwoing Exception. > > > at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:391) > at org.apache.hadoop.mapred.MapTask.run(MapTask.java:325) > at org.apache.hadoop.mapred.Child$4.run(Child.java:270) > at java.security.AccessController.doPrivileged(Native Method) > at javax.security.auth.Subject.doAs(Subject.java:396) > at > org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1127) > at org.apache.hadoop.mapred.Child.main(Child.java:264) > Caused by: org.apache.hadoop.hbase.client.RetriesExhaustedException: > Trying to contact region server localhost:50682 for region > mytable,,1325226129670.708fa93842d13d3448295d88906d7ab8., row '444', > but failed after 10 attempts. > Exceptions: > java.io.IOException: Call to localhost/127.0.0.1:50682 failed on > local exception: java.io.EOFException > java.io.IOException: Call to localhost/127.0.0.1:50682 failed on > local exception: java.io.EOFException > java.io.IOException: Call to localhost/127.0.0.1:50682 failed on > local exception: java.io.EOFException > java.io.IOException: Call to localhost/127.0.0.1:50682 failed on > local exception: java.io.EOFException > java.io.IOException: Call to localhost/127.0.0.1:50682 failed on > local exception: java.io.EOFException > java.io.IOException: Call to localhost/127.0.0.1:50682 failed on > local exception: java.io.EOFException > java.io.IOException: Call to localhost/127.0.0.1:50682 failed on > local exception: java.io.EOFException > java.io.IOException: Call to localhost/127.0.0.1:50682 failed on > local exception: java.io.EOFException > java.io.IOException: Call to localhost/127.0.0.1:50682 failed on > local exception: java.io.EOFException > java.io.IOException: Call to localhost/127.0.0.1:50682 failed on > local exception: java.io.EOFException > > at > org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.getRegionServerWithRetries(HConnectionManager.java:1024) > at org.apache.hadoop.hbase.client.HTable.get(HTable.java:555) > at > ... 12 more > 2011-12-30 13:36:30,175 INFO org.apache.hadoop.mapred.Task: > Runnning cleanup for the task > > command line jps output is > 18667 HMaster > 17929 NameNode > 21942 Jps > 18266 SecondaryNameNode > 18100 DataNode > 19143 Main > 18523 TaskTracker > 18362 JobTracker > 8641 > > > here mytable is my hbase table name and 444 is rowkey > > Development environment : Ubuntu-11.10, Java-6, Hadoop and Hbase from > Cloudera CDH3U2 > > > > > > > > > > > > > > > -- > > Regards, > Nageswaran S
