[ 
https://issues.apache.org/jira/browse/SPARK-19503?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15892169#comment-15892169
 ] 

Takeshi Yamamuro edited comment on SPARK-19503 at 3/2/17 12:39 PM:
-------------------------------------------------------------------

I'm not sure this should be fixed though, postgresql leaves this kind of 
sorting as it is...;
{code}
postgres=# \d testTable
   Table "public.testTable"
 Column |  Type   | Modifiers 
--------+---------+-----------
 key    | integer | 
 value  | integer |

postgres=# select count(*) from (select * from testTable order by key) t;
 count 
-------
     1
(1 row)

postgres=# explain select count(*) from (select * from testTable order by key) 
t;
                               QUERY PLAN                               
------------------------------------------------------------------------
 Aggregate  (cost=192.41..192.42 rows=1 width=0)
   ->  Sort  (cost=158.51..164.16 rows=2260 width=4)
         Sort Key: testTable.key
         ->  Seq Scan on testTable  (cost=0.00..32.60 rows=2260 width=4)
(4 rows)
{code}


was (Author: maropu):
I'm not sure this should be fixed though, postgresql leaves this kind of 
sorting as it is;
{code}
postgres=# \d testTable
   Table "public.testTable"
 Column |  Type   | Modifiers 
--------+---------+-----------
 key    | integer | 
 value  | integer |

postgres=# select count(*) from (select * from testTable order by key) t;
 count 
-------
     1
(1 row)

postgres=# explain select count(*) from (select * from testTable order by key) 
t;
                               QUERY PLAN                               
------------------------------------------------------------------------
 Aggregate  (cost=192.41..192.42 rows=1 width=0)
   ->  Sort  (cost=158.51..164.16 rows=2260 width=4)
         Sort Key: testTable.key
         ->  Seq Scan on testTable  (cost=0.00..32.60 rows=2260 width=4)
(4 rows)
{code}

> Execution Plan Optimizer: avoid sort or shuffle when it does not change end 
> result such as df.sort(...).count()
> ---------------------------------------------------------------------------------------------------------------
>
>                 Key: SPARK-19503
>                 URL: https://issues.apache.org/jira/browse/SPARK-19503
>             Project: Spark
>          Issue Type: Bug
>          Components: Optimizer
>    Affects Versions: 2.1.0
>         Environment: Perhaps only a pyspark or databricks AWS issue
>            Reporter: R
>            Priority: Minor
>              Labels: execution, optimizer, plan, query
>
> df.sort(...).count()
> performs shuffle and sort and then count! This is wasteful as sort is not 
> required here and makes me wonder how smart the algebraic optimiser is 
> indeed! The data may be partitioned by known count (such as parquet files) 
> and we should not shuffle to just perform count.
> This may look trivial, but if optimiser fails to recognise this, I wonder 
> what else is it missing especially in more complex operations.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

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

Reply via email to