My Ambari版本为HDP 2.5.2,Hive版本为Hive 1.2.1000.2.5.3.0-37。
我试图看到合并操作在HIVE中起作用。我尝试过以下步骤:
在Ambari上启用ACID交易并重新启动HIVE服务
创建包含员工旧工资的目标表。
创建由(id)聚集的表emp(id int,name string,sal int)到存储为ORC的4个桶中TBLPROPERTIES('transactional'='true');
在其上插入了4条记录。
插入emp值(1,'ABC',1000);
插入emp值(102,'XYZ',2000);
插入emp值(103,'MNO',3000);
插入emp值(104,'PQR',200);
创建了具有id和更新工资的源表。这是一个装有csv文件的普通表。
create table emp_updated(id int,sal_new int)以','结尾的行格式分隔字段;
将路径'/data/emp_updated.csv'中的数据加载到表emp_updated;
现在,我希望用id匹配的emp_updated表中的sal值更新我的emp表的sal列。我在下面询问。
在e1.id = e2.id上使用emp_updated将e_updated合并为e1,然后更新set sal = e2.sal;
它给我以下错误:
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'
此版本不支持合并吗?接下来的步骤有什么问题?
答案 0 :(得分:0)
https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DML。版本问题。我认为Merge命令可从hive 2.2获得