Puts some data into HBase.
A note on passing {@code byte} arrays in argument
None of the method that receive a {@code byte[]} in argument will copy it.For more info, please refer to the documentation of {@link HBaseRpc}.
A note on passing {@code String}s in argument
All strings are assumed to use the platform's default charset.
A note on passing {@code timestamp}s in argument
HBase orders all the writes based on timestamps from {@code PutRequest}irrespective of the actual order in which they're received or stored by a RegionServer. In other words, if you send a first {@code PutRequest}with timestamp T, and then later send another one for the same table, key, family and qualifier, but with timestamp T - 1, then the second write will look like it was applied before the first one when you read this cell back from HBase. When manually setting timestamps, it is thus strongly recommended to use real UNIX timestamps in milliseconds, e.g. from {@link System#currentTimeMillis}.
If you want to let HBase set the timestamp on a write at the time it's applied within the RegionServer, then use {@link KeyValue#TIMESTAMP_NOW}as a timestamp. The timestamp is set right before being written to the WAL (Write Ahead Log). Note however that this has a subtle consequence: if a write succeeds from the server's point of view, but fails from the client's point of view (maybe because the client got disconnected from the server before the server could acknowledge the write), then if the client retries the write it will create another version of the cell with a different timestamp.