Ich habe eine HBase-Tabelle über Java API erstellt und Daten über ein Put hinzugefügt. Ich kann die Daten in Java auch mit einem entsprechenden Get lesen. Die HBase-Dokumentation besagt, dass ein Zellenwert auch gelesen werden kann, indem eine GET-Anforderung verwendet wird, z. im Browser, siehe documentation.HBase: GET Anfrage für Zeilendaten mit Zeitstempel
Die folgende Anfrage funktioniert für mich, was die ganze Zeile zurückgibt:
http://my_hbase_url:12345/dm-table/exampleRow/family:html?v=1
Das Ergebnis ist ein xml und sieht folgende:
<CellSet>
<Row key="ZXhhbXBsZVJvdw==">
<Cell column="ZmFtaWx5Omh0bWw=" timestamp="1466667016879">PGh0bWw+Li4uTXkgSFRNTC4uLjwvaHRtbD4=</Cell>
</Row>
</CellSet>
Wenn Sie einen Blick auf die Zeitstempel haben, ist es 1466667016879
, aber wenn ich
http://my_hbase_url:12345/dm-table/exampleRow/family:html/1466667016879
nennen erhalte ich eine not found
re sult! Auch der Java-Code funktioniert und gibt mir diesen Zeitstempel:
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);
diese Drucke:
Timestamp: 1466667016879
GET: <html>...My HTML...</html>
So Zeitstempel vorhanden ist, aber die http-GET-Anforderung nicht mit dem Zeitstempel arbeitet, kann jemand helfen?
Ich schaute hinein, aber ich kann 'Familie: html' nicht verwenden. Ist es nur für HBase 2.0? – Whitefret
Die Spalten-Familie "Familie" und die Spalte "html" sind nur aus meinem Tabellenbeispiel, ich habe die Tabelle mit dieser Struktur erstellt. Ich benutze HDP 2.4 mit HBase 1.1.2 –
Ich bin dumm:/... Ich bekomme eine Datei herunterladen statt eine schöne Xml-Antwort. Werde versuchen, es nochmal zu überprüfen – Whitefret