Hive 为什么将记录插入配置单元失败,并导致FailedPredicateException?

Hive 为什么将记录插入配置单元失败,并导致FailedPredicateException?,hive,Hive,我正在尝试将记录插入到我创建的表中。但它失败了,出现了FailedPredicateException( 我尝试对select语句使用别名,然后在sql中使用列名,但失败了,出现了相同的错误。可能是什么问题 create table sales_log( trxn_uuid string, unit_sold int, unihprice decimal(13,4), event_ts timestamp ) stored as orc location '/user/me/sales/sale

我正在尝试将记录插入到我创建的表中。但它失败了,出现了FailedPredicateException(

我尝试对select语句使用别名,然后在sql中使用列名,但失败了,出现了相同的错误。可能是什么问题

create table sales_log(
trxn_uuid string,
unit_sold int,
unihprice decimal(13,4),
event_ts timestamp
)
stored as orc
location '/user/me/sales/sales_log';

insert into sales_log select 'axxx1', 2, 8,cast('2018-01-01 06:34:56.789' as timestamp);

hive> insert into sales_log select 'axxx1', 2, 8,cast('2018-01-01 06:34:56.789' as timestamp);
FailedPredicateException(regularBody,{$s.tree.getChild(1) !=null}?)
        at org.apache.hadoop.hive.ql.parse.HiveParser.regularBody(HiveParser.java:43166)
        at org.apache.hadoop.hive.ql.parse.HiveParser.queryStatementExpressionBody(HiveParser.java:42341)
        at org.apache.hadoop.hive.ql.parse.HiveParser.queryStatementExpression(HiveParser.java:42211)
        at org.apache.hadoop.hive.ql.parse.HiveParser.execStatement(HiveParser.java:1681)
        at org.apache.hadoop.hive.ql.parse.HiveParser.statement(HiveParser.java:1152)
        at org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:211)
        at org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:171)
        at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:438)
        at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:321)
        at org.apache.hadoop.hive.ql.Driver.compileInternal(Driver.java:1224)
        at org.apache.hadoop.hive.ql.Driver.runInternal(Driver.java:1265)
        at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1161)
        at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1151)
        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:87 Failed to recognize predicate '<EOF>'. Failed rule: 'regularBody' in statement
创建销售记录表(
trxn_uuid字符串,
单位(单位),
单位价格十进制(13,4),
事件时间戳
)
储存为兽人
位置“/user/me/sales/sales_log”;
在销售日志中插入选择“axxx1”、2、8、cast('2018-01-01 06:34:56.789'作为时间戳);
配置单元>插入销售日志,选择“axxx1”、2、8、cast('2018-01-01 06:34:56.789'作为时间戳);
FailedPredicateException(regularBody,{$s.tree.getChild(1)!=null}?)
位于org.apache.hadoop.hive.ql.parse.HiveParser.regularBody(HiveParser.java:43166)
位于org.apache.hadoop.hive.ql.parse.HiveParser.queryStatementExpressionBody(HiveParser.java:42341)
位于org.apache.hadoop.hive.ql.parse.HiveParser.queryStatementExpression(HiveParser.java:42211)
位于org.apache.hadoop.hive.ql.parse.HiveParser.execStatement(HiveParser.java:1681)
位于org.apache.hadoop.hive.ql.parse.HiveParser.statement(HiveParser.java:1152)
位于org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:211)
位于org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:171)
位于org.apache.hadoop.hive.ql.Driver.compile(Driver.java:438)
位于org.apache.hadoop.hive.ql.Driver.compile(Driver.java:321)
位于org.apache.hadoop.hive.ql.Driver.compileInternal(Driver.java:1224)
位于org.apache.hadoop.hive.ql.Driver.runInternal(Driver.java:1265)
位于org.apache.hadoop.hive.ql.Driver.run(Driver.java:1161)
位于org.apache.hadoop.hive.ql.Driver.run(Driver.java:1151)
位于org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:217)
位于org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:169)
位于org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:380)
位于org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:740)
位于org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:685)
位于org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:625)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中
位于java.lang.reflect.Method.invoke(Method.java:498)
位于org.apache.hadoop.util.RunJar.run(RunJar.java:233)
位于org.apache.hadoop.util.RunJar.main(RunJar.java:148)
失败:ParseException行1:87无法识别谓词“”。语句中的规则“regularBody”失败

已知问题,已在Hive 1.3.1/2.0中修复


在早期版本中,如果没有from子句,则无法使用
insert as select
。请使用insert
将查询重写为…values…
或升级到最新配置单元版本。

已知问题,已在配置单元1.3.1/2.0中修复


在早期版本中,如果没有from子句,则不能使用
insert as select
。请使用insert
into…values…
重写您的查询,或升级到最新的配置单元版本。

哪个配置单元版本?仅在1.31/2.0版本中修复为1.2。Hi@Shivam您的答案很好!
insert into to table sales\u log select*from(选择'axxx1',2,8,cast('2018-01-01 06:34:56.789'作为时间戳))a;
,如果您再次发布,我将帮助您解释哪个配置单元版本?仅在1.31/2.0版本中修复的是1.2.Hi@Shivam,您的答案很好!
插入表sales_log select*from(选择'axxx1',2,8,cast('2018-01-01 06:34:56.789'作为时间戳))a;
,如果您再次发布,我将帮助您解释