Thanks for the clarification, Navis!
On 21 July 2014 14:01, Navis류승우 <navis....@nexr.com> wrote: > HIVE-4095, originally intended to implement, > > alter table <target_table_name> exchange partition (<partition spec>) with > table <source_table_name>; > > But in implementation, Dheeraj Kumar Singh, the original implementor, seemed > confused and implemented this in inverted manner (target to source). > > HIVE-6129 fixed this(in 0.13.0) and now it's consistent to document. But > the example has been not working in any version, because HIVE-4095 coerced > target_table > and source_table should have same partition columns. > > https://issues.apache.org/jira/browse/HIVE-6133 is the needed one for the > example to work. But seemed to be failed to acquire any interest. > > Thanks, > Navis > > > 2014-07-21 11:40 GMT+09:00 Lefty Leverenz <leftylever...@gmail.com>: > > I'd be happy to update the docs, but need some guidance. The sytax >> confused me originally -- see comments on HIVE-4095 >> <https://issues.apache.org/jira/browse/HIVE-4095?focusedCommentId=13819885&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-13819885>. >> I'll add this discussion to those comments. >> >> >> -- Lefty >> >> >> On Sun, Jul 20, 2014 at 10:22 PM, Andre Araujo <ara...@pythian.com> >> wrote: >> >>> Indeed! The documentation is a fair bit off. >>> >>> I've tested the below on Hive 0.12 on CDH and it works fine. >>> Lefty, would you please update the documentation on the two pages below? >>> >>> ----------------------- >>> Source: >>> https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-ExchangePartition >>> "Exchange Partition" section >>> >>> {code} >>> ALTER TABLE source_table_name EXCHANGE PARTITION (partition_spec) WITH >>> TABLE target_table_name; >>> {code} >>> >>> This statement lets you move the data in a partition from a table to >>> another table that has the same schema and partition keys, but does not >>> already have that partition. >>> For details, see Exchange Partition and HIVE-4095. >>> >>> ----------------------- >>> Source: >>> https://cwiki.apache.org/confluence/display/Hive/Exchange+Partition >>> The EXCHANGE PARTITION DDL command has been proposed as part of >>> https://issues.apache.org/jira/browse/HIVE-4095. >>> >>> The syntax is: >>> >>> {code} >>> alter table <source_table_name> exchange partition (<partition spec>) >>> with table <target_table_name>; >>> {code} >>> >>> The partition spec can be fully or partially specified. >>> >>> The semantics of the above statement is that the data is moved from the >>> source table to the target table. Both the tables must have the same schema >>> and the same partition keys. The operation fails in the presence of an >>> index. >>> The partition(s) must exist in the source table and mus NOT exists in >>> the target one. Consider the following examples: >>> >>> ## Full partition spec >>> >>> {code} >>> create table T1(a string, b string) partitioned by (ds string); >>> create table T2(a string, b string) partitioned by (ds string); >>> alter table T1 add partition (ds = '1'); >>> {code} >>> >>> The operation: >>> >>> {code} >>> alter table T1 exchange partition (ds='1') with table T2; >>> {code} >>> >>> moves the data from T1 to T2@ds=1. The operation fails if T2@ds=1 >>> already exists or T1 and T2 have different schemas and/or partition keys. >>> >>> ## Partial partition spec >>> >>> {code} >>> create table T1(a string, b string) partitioned by (ds string, hr >>> string); >>> create table T2(a string, b string) partitioned by (ds string, hr >>> string); >>> alter table T1 add partition (ds = '1', hr = '00'); >>> alter table T1 add partition (ds = '1', hr = '01'); >>> alter table T1 add partition (ds = '1', hr = '03'); >>> {code} >>> >>> The operation: >>> >>> {code} >>> alter table T1 exchange partition (ds='1') with table T2; >>> {code} >>> >>> moves the 3 partitions from T1 to T2. The operation fails if any of the >>> partitions already exist on T2 or if T1 and T2 have different schemas >>> and/or partition keys. >>> Either all the partitions of T1 will get created or the whole operation >>> will fail. All partitions of T1 are dropped. >>> >>> >>> >>> On 21 July 2014 05:52, Kristof Vanbecelaere < >>> kristof.vanbecela...@gmail.com> wrote: >>> >>>> I think the documentation related to exchanging partitions is not >>>> accurate >>>> >>>> https://cwiki.apache.org/confluence/display/Hive/Exchange+Partition >>>> >>>> when I try it out on hortonworks sandbox 2.1 which runs Hive 0.13 I get >>>> this: >>>> >>>> hive> create table T1(a string, b string) partitioned by (ds string); >>>> >>>> OK >>>> >>>> Time taken: 0.72 seconds >>>> >>>> hive> create table T2(a string, b string); >>>> >>>> OK >>>> >>>> Time taken: 0.357 seconds >>>> >>>> hive> alter table T1 exchange partition (ds='1') with table T2; >>>> >>>> FAILED: SemanticException [Error 10235]: Tables have incompatible >>>> schemas and their partitions cannot be exchanged. >>>> >>>> >>> >>> >>> -- >>> André Araújo >>> Big Data Consultant/Solutions Architect >>> The Pythian Group - Australia - www.pythian.com >>> >>> Office (calls from within Australia): 1300 366 021 x1270 >>> Office (international): +61 2 8016 7000 x270 *OR* +1 613 565 8696 >>> x1270 >>> Mobile: +61 410 323 559 >>> Fax: +61 2 9805 0544 >>> IM: pythianaraujo @ AIM/MSN/Y! or ara...@pythian.com @ GTalk >>> >>> “Success is not about standing at the top, it's the steps you leave >>> behind.” — Iker Pou (rock climber) >>> >>> -- >>> >>> >>> >>> >> > -- André Araújo Big Data Consultant/Solutions Architect The Pythian Group - Australia - www.pythian.com Office (calls from within Australia): 1300 366 021 x1270 Office (international): +61 2 8016 7000 x270 *OR* +1 613 565 8696 x1270 Mobile: +61 410 323 559 Fax: +61 2 9805 0544 IM: pythianaraujo @ AIM/MSN/Y! or ara...@pythian.com @ GTalk “Success is not about standing at the top, it's the steps you leave behind.” — Iker Pou (rock climber) -- --