【问题标题】:Column name DIV shows error in hive列名 DIV 在配置单元中显示错误
【发布时间】:2016-08-22 05:33:29
【问题描述】:

我正在尝试在 hive 中执行以下代码:

create table xyz (name string,div int) ;

显示错误。我们不能在 hive 中使用名为 div 的列吗?我有一个大表,其中有一列 div,执行该 hql 将我抛出错误。这就是我尝试使用上述较小的 hql 的方式,它显示了相同的错误。我正在使用配置单元 0.13。

NoViableAltException(14@[]) at org.apache.hadoop.hive.ql.parse.HiveParser_IdentifiersParser.identifier(HiveParser_IdentifiersParser.java:11627) at org.apache.hadoop.hive.ql.parse.HiveParser.identifier(HiveParser.java:40134) at org.apache.hadoop.hive.ql.parse.HiveParser.columnNameType(HiveParser.java:34747) at org.apache.hadoop.hive.ql.parse.HiveParser.columnNameTypeList(HiveParser.java:32979) at org.apache.hadoop.hive.ql.parse.HiveParser.createTableStatement(HiveParser.java:4544) at org.apache.hadoop.hive.ql.parse.HiveParser.ddlStatement(HiveParser.java:2144) at org.apache.hadoop.hive.ql.parse.HiveParser.execStatement(HiveParser.java:1398) at org.apache.hadoop.hive.ql.parse.HiveParser.statement(HiveParser.java:1036) at org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:199) at org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:166) at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:408) at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:322) at org.apache.hadoop.hive.ql.Driver.compileInternal(Driver.java:976) at org.apache.hadoop.hive.ql.Driver.runInternal(Driver.java:1041) at org.apache.hadoop.hive.ql.Driver.run(Driver.java:912) at org.apache.hadoop.hive.ql.Driver.run(Driver.java:902) at org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:268) at org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:220) at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:423) at org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:793) at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:686) 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:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.apache.hadoop.util.RunJar.main(RunJar.java:212) FAILED: ParseException line 2:15 cannot identify input near 'div' 'int' ')' in column specification`

【问题讨论】:

  • Div 是一个 SQL 保留字,因此这个关键字在 hive 中被禁止使用。你的 ` 变通方法也有效。

标签: hadoop hive hbase


【解决方案1】:

那么答案就找到了!

create table xyz (name string, `div` int); 

这行得通!用“`”符号包围div,然后它就可以工作了。

我想 div 将是 hive 中的关键字(但在任何文档中都找不到)。

谢谢, 尼苏

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-03
    • 2012-11-26
    • 2019-06-07
    相关资源
    最近更新 更多