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

Reply via email to