2017-02-19 4 views
1

Ich versuche, ein Put Objekt in eine KeyValue Objekte zu konvertieren. Wie kann ich das auf HBase erreichen? Ich habe mir den Quellcode angeschaut, aber keinen Weg gefunden, das zu tun. Mein Put Objekt enthält Zeilenschlüssel und 2 Spalten (A, B Spalten).Put auf Schlüssel Wert auf HBase

Vielen Dank für Helfer

Antwort

2

Ihre Put mit 2 Spalten ist kein Schlüsselwert, aber 2 Schlüsselwerte.

prüfen diese Methode in Put-Klasse:

KeyValue createPutKeyValue(byte[] family, byte[] qualifier, long ts, byte[] value) { 
    return new KeyValue(this.row, family, qualifier, ts, KeyValue.Type.Put, value); 
} 

KeyValue enthält Zelleninformationen - einen Schlüssel, Spalte Familie mit Spalte, Zeitstempel und Daten.

Also für Ihren Fall

List<KeyValue> keyValues = new ArrayList<>(); 
for (Map.Entry<byte[], List<Cell> entry : put.getFamilyCellMap()) { 
    byte[] cf = entry.getKey(); 
    List<Cell> cells = entry.getValue(); 
    for (Cell cell : cells) { 
     // get row, column, ts and value using Cell api 
     keyValues.add(new KeyValue(...)); 
    } 
}