hbase-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jean-Daniel Cryans <jdcry...@apache.org>
Subject Re: HBase Custom Comparator
Date Tue, 03 Jan 2012 22:24:23 GMT
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
<nagesforyou@gmail.com> 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

Mime
View raw message