这里想要做的是我想在HBase表中存储和检索序列化数据,之后我想要检索它们。我想按照方法。请告诉我,如果我错了。
put.add(streamColumnFamily,streamColumnName,serializedData);
这里的serializedData属性将由HBaseSerialization类处理。想要的是,这种方法是否正确。我能否按原样检索存储的数据。 (int as int,float as float,String as String etc)
答案 0 :(得分:2)
是的,方法是正确的。 HBase以字节存储所有内容。 你基本上做了像
这样的事情byte[] key = createSomeKey();
Put put = new Put(key);
put.add(streamColumnFamily,streamColumnName,serializedData);
HTable h = .... // create HTable from HAdmin
h.put(put);
您还可以使用本机java序列化机制来序列化和反序列化对象,如下所示:
public byte[] serialize(Serializable object) throws IOException {
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
ObjectOutput stream = new ObjectOutputStream(byteArrayOutputStream);
stream.writeObject(object);
stream.flush();
return byteArrayOutputStream.toByteArray()
}
public Object deserialize(byte[] bytes){
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes);
ObjectInputStream objectInputStream = new ObjectInputStream(byteArrayInputStream);
objectInputStream.readObject();
}
此外,如果您正在序列化和反序列化基本对象,如Integer,Long,String ......在Bytes
org.apache.hadoop.hbase.util
的良好实用程序类