【发布时间】:2016-06-27 14:46:34
【问题描述】:
我通过 Java API 创建了一个 HBase 表,并通过 Put 添加了数据。我还可以使用相应的 Get 读取 Java 中的数据。 HBase 文档说,也可以通过使用 GET 请求来读取单元格值,例如在浏览器中,请参阅documentation。
以下请求适用于我,它返回整行:
http://my_hbase_url:12345/dm-table/exampleRow/family:html?v=1
结果是一个 xml,如下所示:
<CellSet>
<Row key="ZXhhbXBsZVJvdw==">
<Cell column="ZmFtaWx5Omh0bWw=" timestamp="1466667016879">PGh0bWw+Li4uTXkgSFRNTC4uLjwvaHRtbD4=</Cell>
</Row>
</CellSet>
如果你看一下时间戳,它是1466667016879,但是当我打电话时
http://my_hbase_url:12345/dm-table/exampleRow/family:html/1466667016879
我得到一个not found 结果! Java代码也可以工作并给我这个时间戳:
HTable table = new HTable(config, TABLE_NAME.getBytes());
Get g = new Get("exampleRow".getBytes());
g.setTimeStamp(1466667016879L);
Result r = table.get(g);
System.out.println("Timestamp: " + r.rawCells()[0].getTimestamp());
byte[] value = r.getValue(CF_DEFAULT.getBytes(), "html".getBytes());
String valueStr = new String(value);
System.out.println("GET: " + valueStr);
打印出来:
Timestamp: 1466667016879
GET: <html>...My HTML...</html>
所以时间戳确实存在,但是 http GET 请求无法使用时间戳,有人可以帮忙吗?
【问题讨论】:
-
我查看了它,但我无法使用
family:html。是否仅适用于 HBase 2.0? -
列家族“family”和列“html”只是来自我的表格示例,我用这种结构创建了表格。我使用 HDP 2.4 和 HBase 1.1.2
-
我很笨 :/... 我要下载一个文件而不是有一个很好的 Xml 答案。将尝试再次调查它
-
好的,重现了同样的错误,可能有关于它的 JIRA。你的 HBase 版本是多少?
-
这绝对是一个错误,尝试在同一行/列上放置,并查询当前时间戳。您是否还获得了以前的数据而不是当前数据?
标签: hadoop timestamp hbase http-get