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

Wenchen Fan updated SPARK-20236:
--------------------------------
    Description: 
When we overwrite a partitioned data source table, currently Spark will 
truncate the entire table to write new data, or truncate a bunch of partitions 
according to the given static partitions.

For example, {{INSERT OVERWRITE tbl ...}} will truncate the entire table, 
{{INSERT OVERWRITE tbl PARTITION (a=1, b)}} will truncate all the partitions 
that starts with {{a=1}}.

This behavior is kind of reasonable as we can know which partitions will be 
overwritten before runtime. However, hive has a different behavior that it only 
overwrites related partitions, e.g. {{INSERT OVERWRITE tbl SELECT 1,2,3}} will 
only overwrite partition {{a=2, b=3}}, assuming {{tbl}} has only one data 
column and is partitioned by {{a}} and {{b}}.

It seems better if we can follow hive's behavior.

  was:
When we overwrite a partitioned table, currently Spark will truncate the entire 
table to write new data, or truncate a bunch of partitions according to the 
given static partitions.

For example, {{INSERT OVERWRITE tbl ...}} will truncate the entire table, 
{{INSERT OVERWRITE tbl PARTITION (a=1, b)}} will truncate all the partitions 
that starts with {{a=1}}.

This behavior is kind of reasonable as we can know which partitions will be 
overwritten before runtime. However, hive has a different behavior that it only 
overwrites related partitions, e.g. {{INSERT OVERWRITE tbl SELECT 1,2,3}} will 
only overwrite partition {{a=2, b=3}}, assuming {{tbl}} has only one data 
column and is partitioned by {{a}} and {{b}}.

It seems better if we can follow hive's behavior.


> Overwrite a partitioned table should only overwrite related partitions
> ----------------------------------------------------------------------
>
>                 Key: SPARK-20236
>                 URL: https://issues.apache.org/jira/browse/SPARK-20236
>             Project: Spark
>          Issue Type: Improvement
>          Components: SQL
>    Affects Versions: 2.2.0
>            Reporter: Wenchen Fan
>
> When we overwrite a partitioned data source table, currently Spark will 
> truncate the entire table to write new data, or truncate a bunch of 
> partitions according to the given static partitions.
> For example, {{INSERT OVERWRITE tbl ...}} will truncate the entire table, 
> {{INSERT OVERWRITE tbl PARTITION (a=1, b)}} will truncate all the partitions 
> that starts with {{a=1}}.
> This behavior is kind of reasonable as we can know which partitions will be 
> overwritten before runtime. However, hive has a different behavior that it 
> only overwrites related partitions, e.g. {{INSERT OVERWRITE tbl SELECT 
> 1,2,3}} will only overwrite partition {{a=2, b=3}}, assuming {{tbl}} has only 
> one data column and is partitioned by {{a}} and {{b}}.
> It seems better if we can follow hive's behavior.



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