我正在尝试使用HBase REST API调用将值插入到Hbase表中。以下是我正在使用的curl命令。

curl -v -XPUT 'http://localhost:8080/emp/1/pers:name' -H "Accept: application/json" -H "Content-Type: application/json" --data '{ "Row": [ { "Cell": [ { "column": "cGVyczpuYW1lCg==", "$": "TXlOYW1lCg==" } ], "key": "MQo=" } ] }'

调用工作正常,我得到一个“HTTP / 1.1 200 OK”。但是,当我看到Hbase表时,该调用创建了新行“1 \ x0A”并插入了新行,而不是更新“1”行中的值。具有相同垃圾字符的新值。
1\x0A    column=pers:name\x0A, timestamp=1437596697507, value=MyName\x0A

有人看到过这样的东西吗?提前致谢..

最佳答案

好吧,我整理了这个..
\ x0A是转义的十六进制换行符。等效于\ n ..
当我们对base64进行编码时,它会考虑\ n转义字符。.因此,当我们对basekey,row和value进行base64编码时,我们需要传递“-n”。

例如:

echo -n MyName | base64
TXlOYW1l
echo MyName | base64
TXlOYW1lCg==

两者之间是有区别的。那就是造成我问题的原因..

10-08 14:23