Hive建表異常cannot recognize input near ')' 'row' 'format' in column specification

有問題的建表語句

hive> create table tb_emp0
    > (
    > id int,
    > name string,
    > )
    > row format delimited
    > fields terminated by ',';

錯誤信息

NoViableAltException(307@[])
	at org.apache.hadoop.hive.ql.parse.HiveParser_IdentifiersParser.identifier(HiveParser_IdentifiersParser.java:10858)
	at org.apache.hadoop.hive.ql.parse.HiveParser.identifier(HiveParser.java:45850)
	at org.apache.hadoop.hive.ql.parse.HiveParser.columnNameType(HiveParser.java:38044)
	at org.apache.hadoop.hive.ql.parse.HiveParser.columnNameTypeList(HiveParser.java:36203)
	at org.apache.hadoop.hive.ql.parse.HiveParser.createTableStatement(HiveParser.java:5214)
	at org.apache.hadoop.hive.ql.parse.HiveParser.ddlStatement(HiveParser.java:2640)
	at org.apache.hadoop.hive.ql.parse.HiveParser.execStatement(HiveParser.java:1650)
	at org.apache.hadoop.hive.ql.parse.HiveParser.statement(HiveParser.java:1109)
	at org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:202)
	at org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:166)
	at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:396)
	at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:308)
	at org.apache.hadoop.hive.ql.Driver.compileInternal(Driver.java:1122)
	at org.apache.hadoop.hive.ql.Driver.runInternal(Driver.java:1170)
	at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1059)
	at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1049)
	at org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:213)
	at org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:165)
	at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:376)
	at org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:736)
	at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:681)
	at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:621)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:483)
	at org.apache.hadoop.util.RunJar.run(RunJar.java:221)
	at org.apache.hadoop.util.RunJar.main(RunJar.java:136)
FAILED: ParseException line 5:0 cannot recognize input near ')' 'row' 'format' in column specification

錯誤原因 :

在修改表時 ,沒有將建表語句完全修改正確

這是第一個表沒問題

create table tb_emp5
(
id int,
name string,
likes array<string>,  -- 愛好採用數組類型
address map<string,string> -- 地址採取map類型
)
row format delimited
fields terminated by ','
collection items terminated by '-'
map keys terminated by ':';

我在將第一個表修改成下面的出了問題!

hive> create table tb_emp0
    > (
    > id int,
    > name string,
    > )
    > row format delimited
    > fields terminated by ',';

根據錯誤提示信息可知 : 無法識別第五行內容,說明第五行或第四行語法出了問題
FAILED: ParseException line 5:0 cannot recognize input near ‘)’ ‘row’ ‘format’ in column specification

最終發現了在name string,中在刪減表時少刪除了一個逗號 .導致讀取時因爲是逗號的原因系統無法認爲第四行是結束, 因此讀不到第五行的數據

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章