hadoop - 创建 hive 外部表时出错
问题描述
在创建外部配置单元表时低于错误配置单元(yatish)
CREATE EXTERNAL TABLE yatish_h1b_data_ak
(
ID:INT,
CASE_STATUS:VARCHAR,
EMPLOYER_NAME:VARCHAR,
SOC_NAME:VARCHAR,
JOB_TITLE:VARCHAR,
FULL_TIME_POSITION:VARCHAR,
PREVAILING_WAGE:FLOAT,
YEAR:INT,
WORKSITE:VARCHAR,
LONGITUDE:VARCHAR,
LATITUDE:VARCHAR
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY \073' LINE TERMINATED BY '\n'
LOCATION user/seethayatish/yatish;
NoViableAltException(9@[])
在 org.apache.hadoop.hive.ql.parse.HiveParser.type(HiveParser.java:40648) > 在 org.apache.hadoop.hive.ql.parse.HiveParser.colType(HiveParser.java:40405) 在 org. org.apache.hadoop.hive.ql.parse.HiveParser.columnNameTypeList(HiveParser.java:38213) 在 org.apache.hadoop 上的 apache.hadoop.hive.ql.parse.HiveParser.columnNameType(HiveParser.java:40089)。 hive.ql.parse.HiveParser.createTableStatement(HiveParser.java:6726) 在 org.apache.hadoop.hive.ql.parse.HiveParser.ddlStatement(HiveParser.java:4122) 在 org.apache.hadoop.hive.ql。 org.apache.hadoop.hive.ql.parse.HiveParser.statement(HiveParser.java:1152) 在 org.apache.hadoop.hive.ql.parse.ParseDriver 的 parse.HiveParser.execStatement(HiveParser.java:1786)。在 org.apache.hadoop.hive.ql.parse.ParseDriver 解析(ParseDriver.java:211)。在 org.apache.hadoop.hive.ql.Driver.compile(Driver.java:330) 的 org.apache.hadoop.hive.ql.Driver.compile(Driver.java:447) 解析(ParseDriver.java:171)在 org.apache.hadoop.hive.ql.Driver.compileInternal(Driver.java:1233) 在 org.apache.hadoop.hive.ql.Driver.runInternal(Driver.java:1274) 在 org.apache.hadoop.hive .ql.Driver.run(Driver.java:1170) 在 org.apache.hadoop.hive.ql.Driver.run(Driver.java:1160) 在 org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver .java:217) 在 org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:380) 在 org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:169) 在 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(Native Method) 在 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 ) at org.apache.hadoop.util.RunJar.main(RunJar.java:148) FAILED: ParseException line 1:45 cannot identify input near ':' 'INT' ',' in column type62) 在 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:45 无法识别列类型中 ':' 'INT' ',' 附近的输入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:45 无法识别列类型中 ':' 'INT' ',' 附近的输入
解决方案
您错误地编写了创建表语句。字段名称与其数据类型之间没有冒号 (:)。只需在字段名称及其数据类型之间保留空格即可。此外,hive 中不支持 VARCHAR 和 FLOAT 类型,而是使用 STRING 和 DOUBLE。
下面是正确的说法:
CREATE EXTERNAL TABLE yatish_h1b_data_ak (
ID INT,
CASE_STATUS STRING,
EMPLOYER_NAME STRING,
SOC_NAME STRING,
JOB_TITLE STRING,
FULL_TIME_POSITION STRING,
PREVAILING_WAGE FLOAT,
YEAR INT,
WORKSITE STRING,
LONGITUDE STRING,
LATITUDE STRING )
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\073'
LINES TERMINATED BY '\n'
LOCATION '/user/seethayatish/yatish';
推荐阅读
- java - 传播 Akka 的 PoisonPill 消息
- r - 如何为 Fisher 精确检验尝试不同的效应大小?
- java - 如何禁用向自身发送好友请求的按钮?
- heroku - 如何将 Heroku 插件从一个应用程序移动到另一个应用程序
- java - 异步 firebase db 不更新类成员变量
- amazon-web-services - 用于存储 CDN 使用的静态文件的 AWS 服务
- java - Spring Boot 2.0 / OAuth2 / JWT / Zuul / 微服务
- javascript - 将 blob MIME 类型设置为 wav 仍会导致 webM
- java - 如何在电子邮件中嵌入图像?
- python - 从另一个数据框中获取列并在新数据框中返回的函数