You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hive.apache.org by "Gopal V (JIRA)" <ji...@apache.org> on 2017/02/13 21:39:41 UTC
[jira] [Commented] (HIVE-14016) Vectorization: Add support for
Grouping Sets
[ https://issues.apache.org/jira/browse/HIVE-14016?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15864494#comment-15864494 ]
Gopal V commented on HIVE-14016:
--------------------------------
[~mmccline]: to avoid such a large .q.out changes, can we downgrade
@Explain(displayName = "grouping sets")
to only show during extended explains?
> 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
>
>
> 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)