首页 > 解决方案 > 创建 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' ',' 附近的输入

标签: hadoophivehql

解决方案


您错误地编写了创建表语句。字段名称与其数据类型之间没有冒号 (:)。只需在字段名称及其数据类型之间保留空格即可。此外,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';

推荐阅读