Csaba Ringhofer created IMPALA-10431:
----------------------------------------

             Summary: Consider partitioning instead of sorting before inserts
                 Key: IMPALA-10431
                 URL: https://issues.apache.org/jira/browse/IMPALA-10431
             Project: IMPALA
          Issue Type: Improvement
          Components: Backend, Frontend
            Reporter: Csaba Ringhofer


Currently before partitioned inserts Impala can add a sort node to sort by the 
partitioning columns - the benefit of this is that the insert will only have to 
write one file at a time, which reduces memory requirements if the number of 
partitions is large. The drawback is the extra O(n*log n) CPU cost and the 
potential spilling.

As the order we write the partitions in doesn't matter, partitioning the rows 
in a spilling  hash table would give the same benefits but reduce the O(n*log) 
n CPU cost to O(n). It may be even possible to avoid spilling in some cases - 
e.g. if only a single partition is written, and the partitioner passes through 
the first partition it sees to the file sink.

The drawback is that unlike sort, we don't have  a partitioner node in Impala 
yet, but the algorithm is very similar to what's happening in grouping 
aggregation or hash join builders, so probably this could be done with medium 
amount of code.

Note that we can also sort by other columns than partitioning columns during 
insert to make min-max stat filtering efficient - in this case we should 
probably stick to the sorting before insert.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to