此hbase数据存储方法正确吗?

wn9m85ua  于 2021-06-09  发布在  Hbase
关注(0)|答案(1)|浏览(372)

这里我要做的是在hbase表中存储和检索序列化数据,稍后我要按原样检索它们。我想遵循这个方法。如果我错了,请告诉我。

put.add(streamColumnFamily,streamColumnName,serializedData);

这里serializeddata属性将由hbaserialization类处理。我想说的是,这个方法正确吗。我将能够检索存储的数据,因为它是(int为int,float为float,string为string等)

noj0wjuj

noj0wjuj1#

是的,方法是正确的。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(); 
   }

此外,如果你是序列化和反序列化的基本对象,如整数,长,字符串。。。有一个很好的实用程序类叫做 Bytesorg.apache.hadoop.hbase.util

相关问题