我尝试使用以下查询创建Hive表:
CREATE TABLE IF NOT EXISTS BXDataSet
(ISBN STRING,
BookTitle STRING,
BookAuthor STRING,
YearOfPublication STRING,
Publisher STRING,
ImageURLS STRING,
ImageURLM STRING,
ImageURLL STRING)
COMMENT 'BX-Books Table'
ROW FORMAT DELIMITED FIELDS TERMINATED BY ';' LINE TERMINATED BY '\n'
STORED AS TEXTFILE;
当我提交给Hive时,我得到以下异常:
MismatchedTokenException(-1!=301)
at org.antlr.runtime.BaseRecognizer.recoverFromMismatchedToken(BaseRecognizer.java:617)
at org.antlr.runtime.BaseRecognizer.match(BaseRecognizer.java:115)
at org.apache.hadoop.hive.ql.parse.HiveParser.tableRowFormatFieldIdentifier(HiveParser.java:31433)
at org.apache.hadoop.hive.ql.parse.HiveParser.rowFormatDelimited(HiveParser.java:30386)
at org.apache.hadoop.hive.ql.parse.HiveParser.tableRowFormat(HiveParser.java:30662)
at org.apache.hadoop.hive.ql.parse.HiveParser.createTableStatement(HiveParser.java:4683)
at org.apache.hadoop.hive.ql.parse.HiveParser.ddlStatement(HiveParser.java:2144)
at org.apache.hadoop.hive.ql.parse.HiveParser.execStatement(HiveParser.java:1398)
at org.apache.hadoop.hive.ql.parse.HiveParser.statement(HiveParser.java:1036)
at org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:199)
at org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:166)
at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:404)
at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:322)
at org.apache.hadoop.hive.ql.Driver.compileInternal(Driver.java:975)
at org.apache.hadoop.hive.ql.Driver.runInternal(Driver.java:1040)
at org.apache.hadoop.hive.ql.Driver.run(Driver.java:911)
at org.apache.hadoop.hive.ql.Driver.run(Driver.java:901)
at org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:268)
at org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:220)
at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:423)
at org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:792)
at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:686)
at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:625)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
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 10:43 mismatched input '<EOF>' expecting StringLiteral near 'BY' in table row format's field separator
Hive已正确安装,我可以运行show table之类的东西。那么,这个查询的问题是什么?
答案 0 :(得分:13)
您需要指定分隔符的OCT代码。
那是为了; OCT代码是073
CREATE TABLE IF NOT EXISTS BXDataSet
(ISBN STRING,
BookTitle STRING,
BookAuthor STRING,
YearOfPublication STRING,
Publisher STRING,
ImageURLS STRING,
ImageURLM STRING,
ImageURLL STRING)
COMMENT 'BX-Books Table'
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\073' LINE TERMINATED BY '\n'
STORED AS TEXTFILE;
答案 1 :(得分:3)
<强> WRONG 强> LINE TERMINATED BY '\n'
从右强> LINES TERMINATED BY '\n'
&#39; LINES&#39;不是&#39; LINE&#39;
答案 2 :(得分:2)
简单的答案是逃避“;”像这样 ”\;” 所以你的路线就是 由'\;'终止的行格式删除字段由'\ n'
终止的行答案 3 :(得分:0)
CREATE TABLE IF NOT NOT EXISTS BXDataSetNew (ISBN STRING, BookTitle STRING, BookAuthor STRING, YearOfPublication STRING, 发布者STRING, ImageURLS STRING, ImageURLM STRING, ImageURLL STRING) 评论&#39; BX-书籍表&#39; ROW FORMAT DELIMITED FIELDS终止于&#39; \ t&#39;线路终止于&#39; \ n&#39; 存储为文本文件;