I was able to figure it out. I had to use the createTable api which took
splitKeys instead of the startKey, endKey and numPartitions.
If anyone comes across this issue and needs more feedback feel free to ping
On Thu, Feb 14, 2013 at 7:30 PM, Viral Bajaria <[EMAIL PROTECTED]>wrote:
> I am creating a new table and want to pre-split the regions and am seeing
> some weird behavior.
> My table is designed as a composite of multiple fixed length byte arrays
> separated by a control character (for simplicity sake we can say the
> separator is _underscore_). The prefix of this rowkey is deterministic
> (i.e. length of 8 bytes) and I know it beforehand how many different prefix
> I will see in the near future. The values after the prefix is not
> deterministic. I wanted to create a pre-split tables based on the number of
> number of prefix combinations that I know.
> I ended up doing something like this:
> hbaseAdmin.createTable(tableName, Bytes.toBytes(1L),
> Bytes.toBytes(maxCombinationPrefixValue), maxCombinationPrefixValue)
> The create table worked fine and as expected it created the number of
> partitions. But when I write data to the table, I still see all the writes
> hitting a single region instead of hitting different regions based on the
> prefix. Is my thinking of splitting by prefix values flawed ? Do I have to
> split by some real rowkeys (though it's impossible for me to know what
> rowkeys will show up except the row prefix which is much more
> For some reason I think I have a flawed understanding of the createTable
> API and that is causing the issue for me ? Should I use the byte
> prefixes method and not the one that I am using right now ?
> Any suggestions/pointers ?