[ 
https://issues.apache.org/jira/browse/IMPALA-9469?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Zoltán Borók-Nagy resolved IMPALA-9469.
---------------------------------------
    Resolution: Fixed

> ORC scanner vectorization for collection types
> ----------------------------------------------
>
>                 Key: IMPALA-9469
>                 URL: https://issues.apache.org/jira/browse/IMPALA-9469
>             Project: IMPALA
>          Issue Type: Improvement
>          Components: Backend
>            Reporter: Gabor Kaszab
>            Assignee: Zoltán Borók-Nagy
>            Priority: Major
>              Labels: complextype
>
> https://issues.apache.org/jira/browse/IMPALA-9228 introduced vectorization 
> for primitive types and struct. This Jira covers the same for collections 
> (array, map) and structs containing collections.
> *Prerequisite:*
> 1) As a prerequisite please check how IMPALA-9228 introduces scratch batches 
> to hold a batch rows, and also check how it's populated by primitives or 
> struct fields.
> 2) Read the following document to understand the difference between 
> materialising and non-materialising collection readers: 
> https://docs.google.com/presentation/d/1uj8m7y69o47MhpqCc0SJ03GDTtPDrg4m04eAFVmq34A
> 3) Check how parquet handles collections when populating its scratch batch.
> Implementation details:
> 1) Taking care of materialising collections readers should be done similarly 
> as for primitive types. In this case each collection reader will write one 
> slot into the outgoing RowBatch per each collection it reads. In other words 
> one collection will be represented as one CollectionValue in RowBatch.
> 2) The other case is when the top-level collection reader doesn't materialise 
> directly into RowBatch, instead, it delegates the materialisation to its 
> children. In this case it's not guaranteed that number of required slots in 
> the RowBatch will equal to the number of collections in the collection reader.
> E.g.: Let's assume a table with one column: list of integers. In this case if 
> the top-level ListColumnReader is not materialising then its child, the 
> IntColumnReader will. But the number of required slots will be the number of 
> int values within the collections instead of the number of collection as it 
> would be if the ListColumnReader was materialising directly.
> As a Result if the scratch batch is being populated we might get to a 
> situation where a whole collection doesn't fit into the scratch batch. Check 
> how Parquet handles this case.
> 3) Once populating the scratch batch is done for collections it has to be 
> verified that codegen is also run in these cases. It should work out of the 
> box but let's make sure.
> 4) Currently ORC scanner chooses between row-by-row processing of the rows 
> read by ORC reader and scratch batch reading. Once this Jira is implemented 
> the row-by-row approach is not needed anymore.



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

Reply via email to