You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@drill.apache.org by "Kunal Khatua (JIRA)" <ji...@apache.org> on 2016/06/24 21:07:16 UTC

[jira] [Closed] (DRILL-2517) Apply Partition pruning before reading files during planning

     [ 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)