Serialization HBase数据存储的这种方法正确吗?
在这里,我要做的是在HBase表中存储和检索序列化数据,然后按原样检索它们。我想遵循这个方法。如果我错了,请告诉我Serialization HBase数据存储的这种方法正确吗?,serialization,hbase,deserialization,Serialization,Hbase,Deserialization,在这里,我要做的是在HBase表中存储和检索序列化数据,然后按原样检索它们。我想遵循这个方法。如果我错了,请告诉我 put.add(streamColumnFamily,streamColumnName,serializedData); 这里serializedData属性将按类处理。我想说的是,这个方法正确吗。我是否能够按原样检索存储的数据。(int为int,float为float,String为String等)是的,方法是正确的。HBase以字节存储所有内容。 你基本上是这样做的 byte
put.add(streamColumnFamily,streamColumnName,serializedData);
这里serializedData属性将按类处理。我想说的是,这个方法正确吗。我是否能够按原样检索存储的数据。(int为int,float为float,String为String等)是的,方法是正确的。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。。。在org.apache.hadoop.hbase.util