将德语文本放入hbase表

mm9b1k5b  于 2021-06-09  发布在  Hbase
关注(0)|答案(1)|浏览(531)

我正在尝试通过执行以下操作添加德语字符串来更新表: put'table:data_validation_test','58e1f4200f23e474ca2d7f3a','urlbody:data','Auslöser' 我扫描这张table得到的是:

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

我找不到在hbase中设置编码字符串的方法。如何将字符串按原样放入hbase?

dgiusagp

dgiusagp1#

这只是产品的输出问题 scan 命令(与 get ). 事实上,您的字符串已正确存储。
发生在这里是因为ö ( \xC3\xB6 )以2字节编码,并且 \xC3 以及 \xB6 不能显示为可读字符。记住,在hbase中,主要类型是 Array[Byte] .
如果尝试使用jruby(在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))

然后,您的值应该正确显示。

相关问题