hive-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jesus Camacho Rodriguez (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HIVE-14016) Vectorization: Add support for Grouping Sets
Date Thu, 16 Mar 2017 18:32:41 GMT

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

Jesus Camacho Rodriguez commented on HIVE-14016:
------------------------------------------------

+1

> Vectorization: Add support for Grouping Sets
> --------------------------------------------
>
>                 Key: HIVE-14016
>                 URL: https://issues.apache.org/jira/browse/HIVE-14016
>             Project: Hive
>          Issue Type: Improvement
>          Components: Vectorization
>            Reporter: Gopal V
>            Assignee: Matt McCline
>         Attachments: HIVE-14016.01.patch, HIVE-14016.02.patch, HIVE-14016.03.patch, HIVE-14016.04.patch,
HIVE-14016.05.patch, HIVE-14016.06.patch, HIVE-14016.07.patch, HIVE-14016.091.patch, HIVE-14016.09.patch
>
>
> Rollup and Cube queries are not vectorized today due to the miss of grouping-sets inside
vector group by.
> The cube and rollup operators can be shimmed onto the end of the pipeline by converting
a single row writer into a multiple row writer.
> The corresponding non-vec loop is as follows
> {code}
>       if (groupingSetsPresent) {
>         Object[] newKeysArray = newKeys.getKeyArray();
>         Object[] cloneNewKeysArray = new Object[newKeysArray.length];
>         for (int keyPos = 0; keyPos < groupingSetsPosition; keyPos++) {
>           cloneNewKeysArray[keyPos] = newKeysArray[keyPos];
>         }
>         for (int groupingSetPos = 0; groupingSetPos < groupingSets.size(); groupingSetPos++)
{
>           for (int keyPos = 0; keyPos < groupingSetsPosition; keyPos++) {
>             newKeysArray[keyPos] = null;
>           }
>           FastBitSet bitset = groupingSetsBitSet[groupingSetPos];
>           // Some keys need to be left to null corresponding to that grouping set.
>           for (int keyPos = bitset.nextSetBit(0); keyPos >= 0;
>             keyPos = bitset.nextSetBit(keyPos+1)) {
>             newKeysArray[keyPos] = cloneNewKeysArray[keyPos];
>           }
>           newKeysArray[groupingSetsPosition] = newKeysGroupingSets[groupingSetPos];
>           processKey(row, rowInspector);
>         }
>       }
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Mime
View raw message