Hive合并不给予无法识别'合并''成'

时间:2017-10-13 06:44:29

标签: hive hiveql hadoop2

My Ambari版本为HDP 2.5.2,Hive版本为Hive 1.2.1000.2.5.3.0-37。

我试图看到合并操作在HIVE中起作用。我尝试过以下步骤:

  1. 在Ambari上启用ACID交易并重新启动HIVE服务

  2. 创建包含员工旧工资的目标表。

    创建由(id)聚集的表emp(id int,name string,sal int)到存储为ORC的4个桶中TBLPROPERTIES('transactional'='true');

  3. 在其上插入了4条记录。

    插入emp值(1,'ABC',1000);
        插入emp值(102,'XYZ',2000);
        插入emp值(103,'MNO',3000);
        插入emp值(104,'PQR',200);

  4. 创建了具有id和更新工资的源表。这是一个装有csv文件的普通表。

    create table emp_updated(id int,sal_new int)以','结尾的行格式分隔字段;

    将路径'/data/emp_updated.csv'中的数据加载到表emp_updated;

  5. 现在,我希望用id匹配的emp_updated表中的sal值更新我的emp表的sal列。我在下面询问。

    在e1.id = e2.id上使用emp_updated将e_updated合并为e1,然后更新set sal = e2.sal;

  6. 它给我以下错误:

    NoViableAltException(26@[])
            at org.apache.hadoop.hive.ql.parse.HiveParser.statement(HiveParser.java:1084)
            at org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:202)
            at org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:166)
            at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:437)
            at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:320)
            at org.apache.hadoop.hive.ql.Driver.compileInternal(Driver.java:1219)
            at org.apache.hadoop.hive.ql.Driver.runInternal(Driver.java:1260)
            at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1156)
            at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1146)
            at org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:217)
            at org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:169)
            at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:380)
            at org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:740)
            at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:685)
            at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:625)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
            at java.lang.reflect.Method.invoke(Method.java:498)
            at org.apache.hadoop.util.RunJar.run(RunJar.java:233)
            at org.apache.hadoop.util.RunJar.main(RunJar.java:148)
    FAILED: ParseException line 1:0 cannot recognize input near 'merge' 'into' 'emp'
    

    此版本不支持合并吗?接下来的步骤有什么问题?

1 个答案:

答案 0 :(得分:0)

https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DML。版本问题。我认为Merge命令可从hive 2.2获得