[ 
https://issues.apache.org/jira/browse/HIVE-20321?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16581881#comment-16581881
 ] 

Matt McCline commented on HIVE-20321:
-------------------------------------

With patch #3, there are 4 different kinds of vector hash key wrapper classes 
with these members:

1) VectorHashKeyWrapperEmpty (int hashcode)
2) VectorHashKeyWrapperSingleLong (int hashcode, boolean isNull flag, long 
value)
3) VectorHashKeyWrapperTwoLong (int hashcode, 2 X boolean isNull flags  2 X 
long values)
4) VectorHashKeyWrapperGeneral (original class with many members including 
arrays for all data types, etc)

With the new code "framework", we can add special case classes for other keys 
as desired.

> Vectorization: Cut down memory size of 1 col VectorHashKeyWrapper to <1 
> CacheLine
> ---------------------------------------------------------------------------------
>
>                 Key: HIVE-20321
>                 URL: https://issues.apache.org/jira/browse/HIVE-20321
>             Project: Hive
>          Issue Type: Bug
>            Reporter: Gopal V
>            Assignee: Matt McCline
>            Priority: Major
>         Attachments: HIVE-20321.01.patch, HIVE-20321.02.patch, 
> HIVE-20321.03.patch
>
>
> With a full sized LLAP instance, the memory size of the VectorHashKeyWrapper 
> is bigger than the low Xmx JVMs.
> {code}
> ***** 64-bit VM: **********************************************************
> org.apache.hadoop.hive.ql.exec.vector.VectorHashKeyWrapper object internals:
>  OFFSET  SIZE                                                                 
>     TYPE DESCRIPTION                                  VALUE
>       0    16                                                                 
>          (object header)                              N/A
>      16     4                                                                 
>      int VectorHashKeyWrapper.hashcode                N/A
>      20     4                                                                 
>          (alignment/padding gap)                     
>      24     8                                                                 
>   long[] VectorHashKeyWrapper.longValues              N/A
>      32     8                                                                 
> double[] VectorHashKeyWrapper.doubleValues            N/A
>      40     8                                                                 
> byte[][] VectorHashKeyWrapper.byteValues              N/A
>      48     8                                                                 
>    int[] VectorHashKeyWrapper.byteStarts              N/A
>      56     8                                                                 
>    int[] VectorHashKeyWrapper.byteLengths             N/A
>      64     8                   
> org.apache.hadoop.hive.serde2.io.HiveDecimalWritable[] 
> VectorHashKeyWrapper.decimalValues           N/A
>      72     8                                                     
> java.sql.Timestamp[] VectorHashKeyWrapper.timestampValues         N/A
>      80     8                 
> org.apache.hadoop.hive.common.type.HiveIntervalDayTime[] 
> VectorHashKeyWrapper.intervalDayTimeValues   N/A
>      88     8                                                                
> boolean[] VectorHashKeyWrapper.isNull                  N/A
>      96     8   
> org.apache.hadoop.hive.ql.exec.vector.VectorHashKeyWrapper.HashContext 
> VectorHashKeyWrapper.hashCtx                 N/A
> Instance size: 104 bytes
> Space losses: 4 bytes internal + 0 bytes external = 4 bytes total
> {code}
> Pulling this up to a parent class allows for this to be cut down to 32 bytes 
> for the single column case.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to