0
無法在hbase中存儲\。如何在hbase值中插入特殊字符斜槓「」?
put 'table1','rowKey1','column1','This is \ value.'
被存儲爲
This is \x5C value.
這是在從終端和Java API插入相同的情況下。
爲什麼會發生這種情況,以及如何解決這個問題?
無法在hbase中存儲\。如何在hbase值中插入特殊字符斜槓「」?
put 'table1','rowKey1','column1','This is \ value.'
被存儲爲
This is \x5C value.
這是在從終端和Java API插入相同的情況下。
爲什麼會發生這種情況,以及如何解決這個問題?
這是怎麼發生的?
HBase的外殼use org.apache.hadoop.hbase.util.Bytes::toStringBinary as the default convertor
,我在hbase-shell/src/main/ruby/hbase/table.rb
舉這個從FUNC convert(column, kv)
。
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')
|| " `[email protected]#$%^&*()-_=+[]{}|;:'\",.<>/?".indexOf(ch) >= 0) {
result.append((char)ch);
} else {
result.append(String.format("\\x%02X", ch));
}
}
作爲代碼所示,'\'
將顯示爲ASCII碼,其是\x5C
。
如何解決這個問題?
我不認爲有這樣的需求。原因Hbase
選擇顯示'\'
ascii代碼但不是字符是,當遇到'\'
,你可以確定你正在面對ascii代碼。
有沒有什麼辦法可以強制hbase不把'\'轉換成它的ASCII碼? –
@AbhashKumar它只是'Hbase shell'選擇顯示的方式,在後端存儲中,您可以從hbase使用java驅動程序讀取內容,然後您可以自行處理它。 –