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

Kunal Khatua closed DRILL-2517.
-------------------------------

Create a table with 25 directories at level 0 (1991-2015) and each having 4 sub 
directories (Q1-Q4); each directory having 3.3K files (each about 2.5KB)...  
totaling nearly 330K files (total size of 767MB).

Drill 1.5.0
0: jdbc:drill:schema=dfs.drill2517> explain plan for select * from 
dfs.`/tpchParquet/miniFiles/lineitem` where dir0= 1990 and dir1 = 'Q1';
+------+------+
| text | json |
+------+------+
| 00-00    Screen
00-01      Project(*=[$0])
00-02        Project(T0¦¦*=[$0])
00-03          SelectionVectorRemover
00-04            Filter(condition=[AND(=($1, 1990), =($2, 'Q1'))])
00-05              Project(T0¦¦*=[$0], dir0=[$1], dir1=[$2])
00-06                Scan(groupscan=[ParquetGroupScan 
[entries=[ReadEntryWithPath 
[path=maprfs:/tpchParquet/miniFiles/lineitem/1991/Q2/0_0_127745.parquet]], 
selectionRoot=maprfs:/tpchParquet/miniFiles/lineitem, numFiles=1, 
usedMetadataFile=false, columns=[`*`]]])
 | {...}|
1 row selected (371.543 seconds)

Drill 1.6.0
0: jdbc:drill:schema=dfs.drill2517> explain plan for select * from 
dfs.`/tpchParquet/miniFiles/lineitem` where dir0= 1990 and dir1 = 'Q1';
+------+------+
| text | json |
+------+------+
| 00-00    Screen
00-01      Project(*=[$0])
00-02        Project(T1¦¦*=[$0])
00-03          SelectionVectorRemover
00-04            Filter(condition=[AND(=($1, 1990), =($2, 'Q1'))])
00-05              Project(T1¦¦*=[$0], dir0=[$1], dir1=[$2])
00-06                Scan(groupscan=[ParquetGroupScan 
[entries=[ReadEntryWithPath 
[path=/tpchParquet/miniFiles/lineitem/2013/Q2/0_0_210249.parquet]], 
selectionRoot=maprfs:/tpchParquet/miniFiles/lineitem, numFiles=1, 
usedMetadataFile=false, columns=[`*`]]])
 | {...} |
+------+------+
1 row selected (7.721 seconds)

> Apply Partition pruning before reading files during planning
> ------------------------------------------------------------
>
>                 Key: DRILL-2517
>                 URL: https://issues.apache.org/jira/browse/DRILL-2517
>             Project: Apache Drill
>          Issue Type: New Feature
>          Components: Query Planning & Optimization
>    Affects Versions: 0.7.0, 0.8.0
>            Reporter: Adam Gilmore
>            Assignee: Kunal Khatua
>             Fix For: 1.6.0, Future
>
>
> Partition pruning still tries to read Parquet files during the planning stage 
> even though they don't match the partition filter.
> For example, if there were an invalid Parquet file in a directory that should 
> not be queried:
> {code}
> 0: jdbc:drill:zk=local> select sum(price) from dfs.tmp.purchases where dir0 = 
> 1;
> Query failed: IllegalArgumentException: file:/tmp/purchases/4/0_0_0.parquet 
> is not a Parquet file (too small)
> {code}
> The reason is that the partition pruning happens after the Parquet plugin 
> tries to read the footer of each file.
> Ideally, partition pruning would happen first before the format plugin gets 
> involved.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to