2

如果 HBase 以 long 形式存储每列的时间戳,那么当从终端上的 hbase shell 访问时它如何以正确的数字格式显示值,如果我以 long 形式存储其他值,它会以下列方式显示,\x00\x00\x00\x00\x00\x0By\x80除非您在 java 代码中进行转换,否则无法直接读取。或者 HBase 是否有其他数据类型来存储时间戳值?

 APP:APP_ID                                 timestamp=1337657056164, value=\x00\x00\x00$
 APP:APP_NAME                               timestamp=1337657056164, value=java.process
 TUW:EXCEPTION                              timestamp=1337657056164, value=0
 TUW:TUW_ID                                 timestamp=1337657056164, value=\x00\x00\x12\x08
 TUW:TUW_STATUS                             timestamp=1337657056164, value=\x00\x00\x00\x02
4

1 回答 1

4

您存储在 HBase 中的任何值看起来都类似于\x00\x00\x00\x00\x00\x0By\x80,因为 HBase 将每个值视为一个字节数组,而不管其数据类型如何。这就是为什么您必须将这些值转换回 java 类型才能看到它们。

虽然时间戳是 Hbase 在内部用于对存储的数据进行版本控制的东西,它是“自纪元以来的以秒为单位的时间”。它也可以是我们选择的其他值。我们可以在插入数据时指定时间戳。

于 2012-05-22T09:29:13.490 回答