如何在hbase值中插入特殊字符斜杠“\”?

时间:2016-09-21 13:01:01

标签: hbase

无法在\ hbase中存储\。

put 'table1','rowKey1','column1','This is \ value.'

存储为

This is \x5C value.

从终端和Java API插入时的情况相同。

为什么会发生这种情况以及如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

为什么会这样?

Hbase shell use org.apache.hadoop.hbase.util.Bytes::toStringBinary as the default convertor,我在convert(column, kv)中的func hbase-shell/src/main/ruby/hbase/table.rb引用此内容。

toStringBinary中的代码可以解释为什么会这样。

for (int i = off; i < off + len ; ++i ) {
  int ch = b[i] & 0xFF;
  if ((ch >= '0' && ch <= '9')
      || (ch >= 'A' && ch <= 'Z')
      || (ch >= 'a' && ch <= 'z')
      || " `~!@#$%^&*()-_=+[]{}|;:'\",.<>/?".indexOf(ch) >= 0 ) {
    result.append((char)ch);
  } else {
    result.append(String.format("\\x%02X", ch));
  }
}

如代码所示,'\'将显示为ascii代码,即\x5C

如何解决此问题?

我不认为有这样的需要。 Hbase选择将'\'显示为ascii代码而不是字符的原因是,遇到'\'时,您可以确定您正在面对ascii代码。