有没有办法通过python

时间:2016-11-25 16:19:42

标签: java python serialization hbase deserialization

我将java对象存储在hbase中(即)让我说我有一个对象' User'有3个参数,如firstname,middlename和lastname。我在java中使用以下代码进行序列化

Object object = (object) user;    
byte[] byteData = SerializationUtils.serialize((Serializable) object);

并存储在hbase中,例如在KeyValue对的值部分中存储完整对象(上面的byte []格式)'

它存储在hbase中(例如)

column = container:container,timestamp = 1480016194005,value = \ xAC \ xED \ x00 \ x05sr \ x00& com.test.container \ x07 \ x89 \ x83 \ xFA \ x7F \ xD0F \ xA5 \ x02 \ x00 \ x08I \ X00 \ x07classIdJ \ X00 \ x14dateTimeInLongFormatZ \ X00 \ x04rootZ \ X00 \ x09undefinedL \ X00 \ x03keyt \ X00 \ x12Ljava /郎/字符串为:L \ X00 \ x04modeq \ X00〜\ X00 \ x01L \ X00 \ x04nameq \ X00〜\ X00 \ x01L \ X00 \ x06userIdq \ X00〜\ X00 \ x01xp \ X00 \ X00 \ X00 \ X02 \ X00 \ X00 \ x01X \ x967 \ XBA \ XF0 \ X00 \ x00t \ X00 \ x1Econtainer_393_5639181044834024t \ X00 \ x06expandt \ X00 \ x02ert \ X00 \ x08testadmin

当我尝试检索数据时,我在java中使用了以下反序列化并转换回可读格式的对象

object = SerializationUtils.deserialize(bytes);

I would like to retrieve the data stored in java format via happybase using python and I achieved it and received the data as available in hbase like

它存储在hbase中(例如)

column = container:container,timestamp = 1480016194005,value = \ xAC \ xED \ x00 \ x05sr \ x00& com.test.container \ x07 \ x89 \ x83 \ xFA \ x7F \ xD0F \ xA5 \ x02 \ x00 \ x08I \ X00 \ x07classIdJ \ X00 \ x14dateTimeInLongFormatZ \ X00 \ x04rootZ \ X00 \ x09undefinedL \ X00 \ x03keyt \ X00 \ x12Ljava /郎/字符串为:L \ X00 \ x04modeq \ X00〜\ X00 \ x01L \ X00 \ x04nameq \ X00〜\ X00 \ x01L \ X00 \ x06userIdq \ X00〜\ X00 \ x01xp \ X00 \ X00 \ X00 \ X02 \ X00 \ X00 \ x01X \ x967 \ XBA \ XF0 \ X00 \ x00t \ X00 \ x1Econtainer_393_5639181044834024t \ X00 \ x06expandt \ X00 \ x02ert \ X00 \ x08testadmin

有没有办法通过python

反序列化java对象

非常感谢

1 个答案:

答案 0 :(得分:3)

有一个Python库:

https://pypi.python.org/pypi/javaobj-py3/

用法似乎非常简单:

import javaobj
jobj = self.read_file("obj5.ser")
pobj = javaobj.loads(jobj)
print(pobj)