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)