Description
I cannot create a table with 256 evenly-sliced splits using the API. I believe due to the fact that Text can only hold valid Unicode characters, the following only generates 129 splits:
TableOperations tableOps = connector.tableOperations(); TreeSet<Text> splits = new TreeSet<Text>(); for (int i = 0; i < 256; i++) { byte[] bytes = { (byte) i }; String theStr = new String(bytes); splits.add(new Text(theStr)); } tableOps.addSplits(TABLE_NAME, splits);
Using getsplits in the shell, I see the highest split be 0x7F; while we can use byte values 0x80 through 0xFF as leading bytes in row keys, the use of Text in the addSplits() method makes these invalid strings to split on.
Attachments
Attachments
Issue Links
- links to