将德语文本放入 hbase table

putting german text in hbase table

我正在尝试通过执行以下操作添加德语字符串来更新 table: 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 中?

这只是 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))

那么,你的值应该能正常显示了。