首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建表格查询的MismatchedTokenException

创建表格查询的MismatchedTokenException
EN

Stack Overflow用户
提问于 2014-09-05 11:24:37
回答 4查看 30.3K关注 0票数 4

我正在尝试使用以下查询创建一个Hive表:

代码语言:javascript
复制
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提交时,我是如何得到以下例外的:

代码语言:javascript
复制
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

正确安装了蜂箱,我可以运行像显示表这样的东西。那么,这个查询有什么问题呢?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-09-05 11:55:59

您需要指定分隔符的OCT代码。

为;OCT代码为073。

代码语言:javascript
复制
  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;
票数 16
EN

Stack Overflow用户

发布于 2015-01-26 16:47:47

WRONGLINE TERMINATED BY '\n'

RIGHTLINES TERMINATED BY '\n'

“LINE”不是“行”

票数 4
EN

Stack Overflow用户

发布于 2015-12-23 11:08:35

简单的答案是转义";“,这样行将是行格式分隔字段,以‘\’行结束,以'\n‘结尾。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25684823

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档