2017-03-25 159 views
0

我试图在蜂巢中创建表,但获取下面提到的错误。任何人都可以帮助我解决问题吗?蜂巢创建外部表

CREATE EXTERNAL TABLE IF NOT EXISTS flightInfo2008 
(Year INT, 
Month INT, 
DayofMonth INT, 
DayOfWeek INT, 
DepTime INT, 
CRSDepTime INT, 
ArrTime INT, 
CRSArrTime INT, 
UniqueCarrier STRING, 
FlightNum INT, 
TailNum STRING, 
ActualElapsedTime INT, 
CRSElapsedTime INT, 
AirTime INT, 
ArrDelay INT, 
DepDelay INT, 
Origin STRING, 
Dest STRING, 
Distance INT, 
TaxiIn INT, 
TaxiOut INT, 
Cancelled INT, 
CancellationCode INT, 
Diverted INT, 
CarrierDelay INT, 
WeatherDelay INT, 
NASDelay INT, 
SecurityDelay INT, 
LateAircraftDelay INT) 
COMMENT 'mydb flightInfo2008' 
ROW FORMAT DELIMITED 
FIELDS TERMINATED BY ';' 
STORED AS TEXTFILE 
LOCATION '/user/hadoop/mydata'; 

FAILED: ParseException line 15:10 cannot recognize input near ',' 'ArrDelay' 'INT' in column type
hive>

+1

它似乎没问题,你可以看看你的脚本来检查你是否看到一些特殊字符。此外,请尝试更改年份和月份的名称,这些名称中包含udfs,可能配置单元对异常并不十分清楚。你使用的是什么Hive版本? – hlagos

+0

检查TAB符号并将它们替换为空格 – leftjoin

+0

@lake我已更改年份和月份,但它仍然无法正常工作,我正在使用Hive 1.2.1版本。 – mia

回答

0

寻找可能在复制从记事本的文本中加入了一些特殊字符。

0

运行你从蜂巢CREATE语句:

FAILED: ParseException line 33:22 mismatched input '' expecting StringLiteral near 'BY' in table row format's field separator

从直线:

Error: Error while compiling statement: FAILED: ParseException line 33:22 mismatched input '' expecting StringLiteral near 'BY' in table row format's field separator (state=42000,code=40000)

在这两种情况下,问题是

FIELDS TERMINATED BY ';'

应写为

FIELDS TERMINATED BY '\;'

在此修改之后,我创建了蜂巢和直线的表格。

Impala-shell接受';'和'\'并成功创建表。

但是你的错误信息与我的错误信息不一样。所以我同意已经给出答案,显然问题出在ArrDelay附近的无形特殊字符上。