2017-04-03 4 views
0

I durch Zugabe eines Deutsch-String eine Tabelle zu aktualisieren, ich versuche, die durch folgende Schritte ausführen: put'table:data_validation_test','58e1f4200f23e474ca2d7f3a','urlbody:data','Auslöser' Was ich auf dem Scannen diese Tabelle erhalte, ist dies:setzt Deutsch Text in hbase Tabelle

scan 'table:data_validation_test' 
ROW         COLUMN+CELL                        
58e1f4200f23e474ca2d7f3a   column=urlbody:data, timestamp=1491215905923, value=Ausl\xC3\xB6ser          
58e1f4200f23e474ca2d7f3a   column=urlbody:id, timestamp=1491215697534, value=58e1f4200f23e474ca2d7f3a 

Ich kann nicht finde eine Möglichkeit, Codierungszeichenfolgen in hbase zu setzen. Wie kann ich die Zeichenfolge in Hbase erhalten?

Antwort

1

Dies ist nur ein Ausgabeproblem des Befehls (das gleiche passiert mit get). In der Tat ist Ihre Zeichenfolge korrekt gespeichert.

Dies passiert hier, weil ö (\xC3\xB6) auf 2 Bytes codiert ist und \xC3 und \xB6 nicht als lesbare Zeichen angezeigt werden können. Denken Sie daran, dass in HBase der Haupttyp Array[Byte] ist.

Wenn Sie versuchen, Ihre String-Wert zu erhalten JRuby mit (Innen HBase Shell):

include Java 
import org.apache.hadoop.hbase.HBaseConfiguration 
import org.apache.hadoop.hbase.client.HTable 
import org.apache.hadoop.hbase.client.Get 
import org.apache.hadoop.hbase.util.Bytes 

config = HBaseConfiguration.create 
htable = HTable.new(conf, 'table:data_validation_test') 
result = htable.get(Get.new('58e1f4200f23e474ca2d7f3a'.to_java_bytes)) 

puts Bytes.toString(result.getValue('urlbody'.to_java_bytes, 'data'.to_java_bytes)) 

Dann sollte Ihr Wert richtig angezeigt.

Verwandte Themen