HBase KeyValue.getKey()返回额外字符
以下hBase代码在我的rowKey前面返回了一些奇怪的字符: “\u0000”“\u0014”“ei:shrimp:-749…” 带前缀的奇怪字符是“\u0000”和“\u0014”,有时是“\u0016”。为了便于阅读,我在上面的一行加了引号。只有两个,它们是为我的划船做准备的。关键应该是‘ei:shrimp:-749…’。以下是我用来取回钥匙的代码:HBase KeyValue.getKey()返回额外字符,hbase,Hbase,以下hBase代码在我的rowKey前面返回了一些奇怪的字符: “\u0000”“\u0014”“ei:shrimp:-749…” 带前缀的奇怪字符是“\u0000”和“\u0014”,有时是“\u0016”。为了便于阅读,我在上面的一行加了引号。只有两个,它们是为我的划船做准备的。关键应该是‘ei:shrimp:-749…’。以下是我用来取回钥匙的代码: import static org.apache.hadoop.hbase.util.Bytes.toBytes; List<Key
import static org.apache.hadoop.hbase.util.Bytes.toBytes;
List<KeyValue> kvs = result.list();
String key = null;
for (KeyValue kv : kvs) {
String value = Bytes.toString(kv.getValue());
String qualifier = Bytes.toString(kv.getQualifier());
if(key == null) {
key = Bytes.toString(kv.getKey());
知道那些奇怪的角色是什么吗?我做错了什么?
非常感谢。
Rajat我想您应该调用KeyValue.getRow() getKey()返回原始键,前两个字节是表示行长度的短字节
public Put createPut(String columnFamily) {
StringBuilder sb = new StringBuilder(this.getGroup()).append(':');
sb.append(this.getKey()).append(':').append(this.getCoordinateHash());
Put p = new Put(toBytes(sb.toString()));
p = p.add(toBytes(columnFamily), toBytes(COLUMN_VALUE), toBytes(this.getValue()));