2014-03-27 18 views
7

我想在hbase中写一个比方说65的值。我得赶紧走为上HBase的外壳下面的命令:Hbase shell - 如何写字节值

put 'table','key','cf:qual','A' 

但是否有将其直接写类似的方式:

put 'table','key','cf:qual',65 (this is not allowed though) 

让我知道你是否了解的问题一样,我会解释更多。

更新:

65我的意思是把 'A',而是直接的 'A' 的ASCII值。对我来说,真正的问题是我想把外壳的值设置在128-255的范围内。

+0

不会放'table','key','cf:qual','65'把65放在表中?..如果我正确理解这个问题.. –

回答

11

由于Hbase Shell是使用ruby实现的,因此可以通过用十六进制格式表示字节值来插入字节值。

例如,如果要插入一个字节值255:255

十六进制表示是FF。 在Hbase shell中,我们应该给它作为stringBinary,它是“\ xFF”

“\ x”是一个特殊的转义字符,用于对十六进制中的任意字节进行编码,所以“\ xFF”表示字节0xFF。

所以put 'table', 'rowkey', 'cf:qual', "\xFF"将插入字节255

重要提示:该值必须是在“”(双引号),而不是“”(单引号)。

相关链接:

How Does Ruby handle bytes/binary

Hexadecimal Digits (Hex-Codes) Cheatsheet

+0

那么如何转换\ xFF二进制? –

+0

请参阅: [十六进制转换为二进制](https://stackoverflow.com/questions/9154783/hexadecimal-to-binary-conversion), [转换表](https://ascii.cl/conversion.htm )。 十六进制是4位长,所以FF将是1111 1111. – Nanda

+0

谢谢。提出这个问题后不久我就想出了它。 –

2

你也可以使用HBase的内置功能,这样

> put 'table','rowkey','cf:qua', Bytes.toBytes(1234) 

它为我工作。

+0

存储int的正确方法 –