I've got a hbase table named 'mytable' with only one column family 'default' and only one qualifier 'details'.
Now I do this query:
get 'mytable', 'test'
And the value of the result is cut. It should be a number (long):
COLUMN CELL
default:details timestamp=1337007859494, value=\x00\x00\x00\x00\x00\x00\xDFH
1 row(s) in 0.0360 seconds
Why do I only see the first seven bytes? How can I see the full value?
If I ask for something with a small value, it works. But big values are incomplete.
Okay, I wrote a little Java which tells me the value. This works. Stupid hbase shell.
Try making the MR job print the value just before inserting, just to ensure that the wrong values are not getting inserted.
Also try reading the values using a java file, to ensure this is not a problem with the jruby shell.
All 8 bytes of your long are in that string:
Easier to see this way:
The first 6 bytes are 0 (hex \x00), the next one is 223 (hex \xDF) and the last is ASCII H (\x48), this makes your long in decimal 57,160. HBase's values are just character arrays and not type aware so the shell escapes as hex all bytes that are not printable ASCII and leaves alone ones that are, not always the clearest.