无法在\ hbase中存储\。
put 'table1','rowKey1','column1','This is \ value.'
存储为
This is \x5C value.
从终端和Java API插入时的情况相同。
为什么会发生这种情况以及如何解决这个问题?
答案 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代码。