Hi Lefty and Xuefu,

Thanks for the rigorous discussion. I confirm that this will apply to UNION (DISTINCT) too according to HIVE-9039. That is to say, It is safe to remove "ALL". Thanks.

Best
Pengcheng


On 2/21/15, 4:09 PM, Xuefu Zhang wrote:
Tech writing assumes true unless proven false. :)

On Sat, Feb 21, 2015 at 1:13 PM, Lefty Leverenz <leftylever...@gmail.com <mailto:leftylever...@gmail.com>> wrote:

        I haven't tried union distinct, but I assume the same rule
        applies.


    Reasonable assumption, so I'll remove "ALL" and see if anyone
    contradicts it.  (Tech writing by successive approximation.)

    Thanks again.

    -- Lefty

    On Sat, Feb 21, 2015 at 6:27 AM, Xuefu Zhang <xzh...@cloudera.com
    <mailto:xzh...@cloudera.com>> wrote:

        I haven't tried union distinct, but I assume the same rule
        applies.

        Thanks for putting it together. It looks good to me.

        --Xuefu

        On Fri, Feb 20, 2015 at 11:44 PM, Lefty Leverenz
        <leftylever...@gmail.com <mailto:leftylever...@gmail.com>> wrote:

            Great, thanks Xuefu.  So this only applies to UNION ALL,
            not UNION DISTINCT?  I had wondered about that.

            I made the changes and added some subheadings: Union
            wikidoc
            
<https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Union> --
            Column Aliases for UNION ALL
            
<https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Union#LanguageManualUnion-ColumnAliasesforUNIONALL>.


            Please review it one more time.

            -- Lefty

            On Fri, Feb 20, 2015 at 7:06 AM, Xuefu Zhang
            <xzh...@cloudera.com <mailto:xzh...@cloudera.com>> wrote:

                Hi Lefty,

                The description seems good to me. I just slightly
                modified it so that it sounds more "technical", for
                your consideration.

                Thanks,
                Xuefu

                UNION ALL expected the same schema on both sides of
                the expression list. As a result, the following query
                may fail with an error message such as "FAILED:
                SemanticException 4:47 Schema of both sides of union
                should match."
                [query]
                In such cases, column aliases can be used to force
                equal schema:
                [corrected query]



                On Thu, Feb 19, 2015 at 1:04 AM, Lefty Leverenz
                <leftylever...@gmail.com
                <mailto:leftylever...@gmail.com>> wrote:

                    Xuefu, I've taken a stab at documenting this in
                    the Union wikidoc
                    
<https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Union> (near
                    the end).  Would you please review it and make any
                    necessary corrections or additions?

                    Thanks.

                    -- Lefty

                    On Mon, Feb 2, 2015 at 2:02 PM, DU DU
                    <will...@gmail.com <mailto:will...@gmail.com>> wrote:

                        This is a part of standard SQL syntax, isn't it?

                        On Mon, Feb 2, 2015 at 2:22 PM, Xuefu Zhang
                        <xzh...@cloudera.com
                        <mailto:xzh...@cloudera.com>> wrote:

                            Yes, I think it would be great if this can
                            be documented.

                            --Xuefu

                            On Sun, Feb 1, 2015 at 6:34 PM, Lefty
                            Leverenz <leftylever...@gmail.com
                            <mailto:leftylever...@gmail.com>> wrote:

                                Xuefu, should this be documented in
                                the Union wikidoc
                                
<https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Union>?


                                Is it relevant for other query clauses?

                                -- Lefty

                                On Sun, Feb 1, 2015 at 11:27 AM,
                                Philippe Kernévez <pkerne...@octo.com
                                <mailto:pkerne...@octo.com>> wrote:

                                    Perfect.

                                    Thank you Xuefu.

                                    Philippe

                                    On Fri, Jan 30, 2015 at 11:32 PM,
                                    Xuefu Zhang <xzh...@cloudera.com
                                    <mailto:xzh...@cloudera.com>> wrote:

                                        Use column alias:

                                        INSERT OVERWRITE TABLE
                                        all_dictionaries_ext
                                         SELECT name, id, category
                                        FROM dictionary
                                         UNION ALL SELECT NAME, ID,
                                        "CAMPAIGN" as category FROM
                                        md_campaigns


                                        On Fri, Jan 30, 2015 at 1:41
                                        PM, Philippe Kernévez
                                        <pkerne...@octo.com
                                        <mailto:pkerne...@octo.com>>
                                        wrote:

                                            Hi all,

                                            I would like to do union
                                            all with a field that is
                                            hardcoded in the request.

                                               INSERT OVERWRITE TABLE
                                            all_dictionaries_ext
                                             SELECT name, id, category
                                            FROM dictionary
                                             UNION ALL SELECT NAME,
                                            ID, "CAMPAIGN" FROM
                                            md_campaigns

                                            Name type is String
                                            Id type is int
                                            Category type is string

                                            When I run this command I
                                            had an error :
                                            FAILED: SemanticException
                                            4:47 Schema of both sides
                                            of union should match.
                                            _u1-subquery2 does not
                                            have the field category.
                                            Error encountered near
                                            token 'md_campaigns'

                                            I supposed that the error
                                            is cause by the String
                                            "CAMPAIGN" which should
                                            not have a type.

                                            How can do this kind of
                                            union ?

                                            The union all with 2 hard
                                            coded fields is ok.
                                              INSERT OVERWRITE TABLE
                                            all_dictionaries_ext
                                            SELECT NAME, ID,
                                            "CAMPAIGN" FROM md_campaigns
                                             UNION ALL SELECT NAME,
                                            ID, "AD_SERVER" FROM
                                            md_ad_servers
                                             UNION ALL SELECT NAME,
                                            ID, "AVERTISER" FROM
                                            md_advertisers
                                             UNION ALL SELECT NAME,
                                            ID, "AGENCIES" FROM
                                            md_agencies


                                            More debug info :

                                            15/01/30 22:34:23 [main]:
                                            INFO parse.ParseDriver:
                                            Parsing command:
                                              INSERT OVERWRITE TABLE
                                            all_dictionaries_ext
                                            SELECT name, id, category
                                            FROM byoa_dictionary
                                                UNION ALL SELECT NAME,
                                            ID, "CAMPAIGN" FROM
                                            md_campaigns
                                            15/01/30 22:34:23 [main]:
                                            INFO parse.ParseDriver:
                                            Parse Completed
                                            15/01/30 22:34:23 [main]:
                                            INFO log.PerfLogger:
                                            </PERFLOG method=parse
                                            start=1422653663887
                                            end=1422653663900
                                            duration=13
                                            
from=org.apache.hadoop.hive.ql.Driver>
                                            15/01/30 22:34:23 [main]:
                                            INFO log.PerfLogger:
                                            <PERFLOG
                                            method=semanticAnalyze
                                            
from=org.apache.hadoop.hive.ql.Driver>
                                            15/01/30 22:34:23 [main]:
                                            INFO
                                            parse.SemanticAnalyzer:
                                            Starting Semantic Analysis
                                            15/01/30 22:34:23 [main]:
                                            INFO
                                            parse.SemanticAnalyzer:
                                            Completed phase 1 of
                                            Semantic Analysis
                                            15/01/30 22:34:23 [main]:
                                            INFO
                                            parse.SemanticAnalyzer:
                                            Get metadata for source tables
                                            15/01/30 22:34:23 [main]:
                                            INFO
                                            parse.SemanticAnalyzer:
                                            Get metadata for subqueries
                                            15/01/30 22:34:23 [main]:
                                            INFO
                                            parse.SemanticAnalyzer:
                                            Get metadata for source tables
                                            15/01/30 22:34:23 [main]:
                                            INFO
                                            parse.SemanticAnalyzer:
                                            Get metadata for subqueries
                                            15/01/30 22:34:24 [main]:
                                            INFO
                                            parse.SemanticAnalyzer:
                                            Get metadata for
                                            destination tables
                                            15/01/30 22:34:24 [main]:
                                            INFO
                                            parse.SemanticAnalyzer:
                                            Get metadata for source tables
                                            15/01/30 22:34:24 [main]:
                                            INFO
                                            parse.SemanticAnalyzer:
                                            Get metadata for subqueries
                                            15/01/30 22:34:24 [main]:
                                            INFO
                                            parse.SemanticAnalyzer:
                                            Get metadata for
                                            destination tables
                                            15/01/30 22:34:24 [main]:
                                            INFO
                                            parse.SemanticAnalyzer:
                                            Get metadata for
                                            destination tables
                                            15/01/30 22:34:24 [main]:
                                            INFO
                                            parse.SemanticAnalyzer:
                                            Completed getting MetaData
                                            in Semantic Analysis
                                            15/01/30 22:34:24 [main]:
                                            INFO
                                            parse.SemanticAnalyzer:
                                            Not invoking CBO because
                                            the statement has too few
                                            joins
                                            FAILED: SemanticException
                                            4:47 Schema of both sides
                                            of union should match.
                                            _u1-subquery2 does not
                                            have the field category.
                                            Error encountered near
                                            token 'md_campaigns'
                                            15/01/30 22:34:24 [main]:
                                            ERROR ql.Driver: FAILED:
                                            SemanticException 4:47
                                            Schema of both sides of
                                            union should match.
                                            _u1-subquery2 does not
                                            have the field category.
                                            Error encountered near
                                            token 'md_campaigns'
                                            
org.apache.hadoop.hive.ql.parse.SemanticException:
                                            4:47 Schema of both sides
                                            of union should match.
                                            _u1-subquery2 does not
                                            have the field category.
                                            Error encountered near
                                            token 'md_campaigns'
                                            at
                                            
org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.genUnionPlan(SemanticAnalyzer.java:9007)
                                            at
                                            
org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.genPlan(SemanticAnalyzer.java:9600)
                                            at
                                            
org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.genPlan(SemanticAnalyzer.java:9620)
                                            at
                                            
org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.genPlan(SemanticAnalyzer.java:9607)
                                            at
                                            
org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.analyzeInternal(SemanticAnalyzer.java:10093)
                                            at
                                            
org.apache.hadoop.hive.ql.parse.BaseSemanticAnalyzer.analyze(BaseSemanticAnalyzer.java:221)
                                            at
                                            
org.apache.hadoop.hive.ql.Driver.compile(Driver.java:415)
                                            at
                                            
org.apache.hadoop.hive.ql.Driver.compile(Driver.java:303)
                                            at
                                            
org.apache.hadoop.hive.ql.Driver.compileInternal(Driver.java:1067)
                                            at
                                            
org.apache.hadoop.hive.ql.Driver.runInternal(Driver.java:1129)
                                            at
                                            
org.apache.hadoop.hive.ql.Driver.run(Driver.java:1004)
                                            at
                                            
org.apache.hadoop.hive.ql.Driver.run(Driver.java:994)
                                            at
                                            
org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:247)
                                            at
                                            
org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:199)
                                            at
                                            
org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:410)
                                            at
                                            
org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:345)
                                            at
                                            
org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:733)
                                            at
                                            
org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:677)
                                            at
                                            
org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:616)
                                            at
                                            
sun.reflect.NativeMethodAccessorImpl.invoke0(Native
                                            Method)
                                            at
                                            
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
                                            at
                                            
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
                                            at
                                            
java.lang.reflect.Method.invoke(Method.java:597)
                                            at
                                            
org.apache.hadoop.util.RunJar.run(RunJar.java:221)
                                            at
                                            
org.apache.hadoop.util.RunJar.main(RunJar.java:136)

                                            Regards,
-- Philippe Kernévez





-- Philippe Kernévez



                                    Directeur technique (Suisse),
                                    pkerne...@octo.com
                                    <mailto:pkerne...@octo.com>
                                    +41 79 888 33 32
                                    <tel:%2B41%2079%20888%2033%2032>

                                    Retrouvez OCTO sur OCTO Talk :
                                    http://blog.octo.com
                                    OCTO Technology http://www.octo.com






-- Thanks,
                        Dayong








Reply via email to