我将 java 对象存储在 hbase 中(即)假设我有一个对象“User”,它有 3 个参数,如名字、中间名和姓氏。我在java中使用以下代码进行序列化
Object object = (object) user;
byte[] byteData = SerializationUtils.serialize((Serializable) object);
并存储在 hbase 中,就像“将完整的对象(以上面的 byte[] 格式)存储在 KeyValue 对的 Value 部分中”
它像(示例)一样存储在 hbase 中
列=容器:容器,时间戳=1480016194005,值=\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/lang/String;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中使用了以下反序列化并转换回可读格式的对象
对象 = 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 中
列=容器:容器,时间戳=1480016194005,值=\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/lang/String;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对象
非常感谢
哈里
有一个 Python 3 库:
https://pypi.python.org/pypi/javaobj-py3
使用起来似乎很简单:
from pathlib import Path
import javaobj
jobj = Path('…').read_bytes()
pobj = javaobj.loads(jobj)
print(pobj)