hbase-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "rajeshbabu (JIRA)" <j...@apache.org>
Subject [jira] [Created] (HBASE-12583) Allow creating reference files even the split row not lies in the storefile range if required
Date Wed, 26 Nov 2014 07:00:18 GMT
rajeshbabu created HBASE-12583:
----------------------------------

             Summary: Allow creating reference files even the split row not lies in the storefile
range if required
                 Key: HBASE-12583
                 URL: https://issues.apache.org/jira/browse/HBASE-12583
             Project: HBase
          Issue Type: Improvement
            Reporter: rajeshbabu
            Assignee: rajeshbabu
             Fix For: 2.0.0, 0.98.9, 0.99.2


Currently in HRegionFileSystem#splitStoreFile we are not creating reference files if the split
row not lies in the storefile range that means one of the child region doesn't have any data.
{code}
   // Check whether the split row lies in the range of the store file
    // If it is outside the range, return directly.
    if (top) {
      //check if larger than last key.
      KeyValue splitKey = KeyValueUtil.createFirstOnRow(splitRow);
      byte[] lastKey = f.createReader().getLastKey();
      // If lastKey is null means storefile is empty.
      if (lastKey == null) return null;
      if (f.getReader().getComparator().compareFlatKey(splitKey.getBuffer(),
          splitKey.getKeyOffset(), splitKey.getKeyLength(), lastKey, 0, lastKey.length) >
0) {
        return null;
      }
    } else {
      //check if smaller than first key
      KeyValue splitKey = KeyValueUtil.createLastOnRow(splitRow);
      byte[] firstKey = f.createReader().getFirstKey();
      // If firstKey is null means storefile is empty.
      if (firstKey == null) return null;
      if (f.getReader().getComparator().compareFlatKey(splitKey.getBuffer(),
          splitKey.getKeyOffset(), splitKey.getKeyLength(), firstKey, 0, firstKey.length)
< 0) {
        return null;
      }
    }
{code}

In some cases when split row should be compared with part of rowkey(in composite rowkey) mainly
for secondary index tables we need to create reference files even when split row not lies
in the storefile range so that they can be rewritten to it's child regions by some custom
half store file reader which compare the part of row key with split row.

The check of comparing split row with storefile range and returning directly can be avoided
by having special boolean attribute in table descriptor when it set to true. Or else we can
have coprocessor hooks so that in the hooks we can create the references and bypass.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message