apache - 在 Hive 中创建表时出现问题

标签 apache hadoop hive

当我尝试使用以下命令创建表时

**

CREATE EXTERNAL TABLE IF NOT EXISTS stocks ( exchange STRING, symbol STRING, ymd STRING, price_open FLOAT, price_high FLOAT, price_low FLOAT, price_close FLOAT, volume INT, price_adj_close FLOAT) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LOCATION '/data/stocks';

**

显示的错误:

NoViableAltException(96@[]) 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:40133) at org.apache.hadoop.hive.ql.parse.HiveParser.columnNameType(HiveParser.java:34747) ... .. .. .. .. 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:0 cannot recognize input near 'exchange' 'string' ',' in column specification

但是当我用反引号将列名括起来时..它起作用了..

CREATE EXTERNAL TABLE IF NOT EXISTS stocks(
`exchange` STRING,
`symbol` STRING,
`ymd` STRING,
`price_open` FLOAT,
`price_high` FLOAT,
`price_low` FLOAT,
`price_close` FLOAT,
`volume` INT,
`price_adj_close` FLOAT)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
LOCATION '/in/stocks/';

谁能解释一下这背后的逻辑是什么?

最佳答案

在 Hive 0.12 及更早版本中,表名和列名中只允许使用字母数字和下划线字符。

在 Hive 0.13 及更高版本中,列名可以包含任何 Unicode 字符(请参阅 HIVE-6013)。在反引号 (`) 内指定的任何列名均按字面意思处理。

您可以引用:https://issues.apache.org/jira/browse/HIVE-6013

希望这对您有所帮助!

关于apache - 在 Hive 中创建表时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36442762/

相关文章:

Django + Apache + mod_wsgi 权限被拒绝

hadoop - hadoop跨数据库查找表

hadoop - Sqoop 导入后无法查询 Hive 表

linux - mod-mono-server4 和 FileNotFoundException

apache - .htaccess 重定向除主页之外的所有页面

apache - 通过 Apache 转发的 Tomcat 使用了错误的上下文路径

hadoop - 使用 master 'yarn' 运行时,必须在环境中设置 HADOOP_CONF_DIR 或 YARN_CONF_DIR

hadoop - Hive - 连接中的 Case 语句 - 错误

apache - 如何从 tsv 文件创建用于文本分类的序列文件

hadoop - 创建Hive分区表需要遵循的规则