Я работаю над простым кодом, чтобы получить строку из HBase, которая не работает через HBase Java API, но ту же строку можно получить из оболочки.
Примеры идентификаторов строк:
F\x0A@z\x11\x0D\xB4\xD3\x05"S273320039#999279720
=\x0A@z\x1AI\xA4\xD8h\x12\x09754427158#999598625
F\x0A@z\x11\x0D\xA6@\x0C\x04\xDA490229991#999279958
M\x0A@z\x13\x092\x89a\x12\x111059947933#999223281
\x00\x0A@E\xFFn[\x18\x9F\xD4-1447846881#5241968320
Результат одного из RowId через оболочку:
hbase(main):003:0> get 'OSMNodes_z3_geometry_ingestionTimestamp_v6',"\x00\x0A@E\xFFn[\x18\x9F\xD4-1447846881#5241968320"
COLUMN CELL
d: timestamp=1588532276719, value=\x03\x00\x06\x02\x00\x12\x00-\x005\x00=\x00R\x00Y\x01x\x00\x00\x0
0\x00\x01\x08\x03\xC0V\xE9\x9AU\x81;\xD5\xBF\xF5\xA7FE^\xAE\xE2\x7F\xF8\x00\x00\x00\x00\x00\x00\
x00\x00\x01q\x9Av\xA9\x00\x00\x00\x01q\x9B\x89Q\x801447846881#524196832\xB0geojso\xEE\xDE\x04{"g
eometry":{"type":"Point","coordinates":[-91.6500448,-1.3533385]},"id":"5241968320","properties":
{"tags":{},"changesetId":53988821,"version":1,"uid":1975220,"user":"jptolosa87","featureSource":
"OSM","sourceTimestamp":"2017-11-22 00:01:26","ingestionTimestamp":"2020-04-21 02:00:00"}}
Java API-код
public static void main(String[] args) {
Configuration conf = HBaseConfiguration.create();
conf.addResource(new Path("/etc/hbase/conf/hbase-default.xml"));
conf.addResource(new Path("/etc/hbase/conf/hbase-site.xml"));
try {
HBaseAdmin.checkHBaseAvailable(conf);
} catch (Exception e) {
e.printStackTrace();
return;
}
Map<String, String> argVector = parseArgVector(args);
final String fileName = argVector.get("fileName");
final String hbaseTableName = argVector.get("hbaseTableName");
final String rowId = argVector.get("rowId");
final HTable table = getTable(hbaseTableName, conf);
Result result = getRow(table, rowId);
System.out.println(result);
System.out.println(result.isEmpty());
System.out.println(Bytes.toString(result.getRow()));
System.out.println(Bytes.toString(result.getValue(Bytes.toBytes("d"), Bytes.toBytes(""))));
}
private static Result getRow(final HTable table, final String rowId) {
try {
Get get = new Get(Bytes.toBytes(rowId));
System.out.println(Bytes.toString(get.getRow()));
return table.get(get);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}