Take a look at PArrayDataTypeEncoder appendValue() and encode(). For variable length data types we store the individual element's serialized bytes with a separator and the the last part of the array contains the offsets. For fixed length data types we just store the individual elements.
On Fri, Oct 19, 2018 at 2:40 PM, William Shen <wills...@marinsoftware.com> wrote: > Hi, > > Sorry if this is too basic of a question. I tried to look through the > documentation but could not find the information. How are Phoenix Arrays > stored in HBase, and in particular, how are varchar array stored? > > I tried to upsert data in phoenix, and compare the HBase value: > > '0' *0*\x00\x00\x00\x80\x01\x00\x00\x00\x04\x00\x00\x00\x01\x01 > '0', '0' 0\x000\x00\x00\x00\x80\x01\x80\x03\x00\x00\x00\x06\x00\x00\x00 > \x02\x01 > '1', '1' 1\x001\x00\x00\x00\x80\x01\x80\x03\x00\x00\x00\x06\x00\x00\x00 > \x02\x01 > '1', '23' 1\x0023\x00\x00\x00\x80\x01\x80\x03\x00\x00\x00\x07\x00\x00\x00 > \x02\x01 > [''] \x00\x00\x80\x01\x00\x00\x00\x02\x00\x00\x00\x01\x01 > ['', ''] \x00\x00\x80\x01\x80\x01\x00\x00\x00\x02\x00\x00\x00\x02\x01 > > I was able to deduce that the varchar is stored with a zero byte > terminator, and I think there is another part tracking how many items are > in an array, but I could not quite figure out the array information in hex > that follows... Can someone help me understand how the array is stored in > HBase? > > Thank you! >