복붙노트

[HADOOP] 하이브 테이블 생성 쿼리의 MismatchedTokenException

HADOOP

하이브 테이블 생성 쿼리의 MismatchedTokenException

다음 쿼리를 사용하여 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가 올바르게 설치되어 쇼 테이블과 같은 것을 실행할 수 있습니다. 그렇다면이 쿼리의 문제점은 무엇입니까?

해결법

  1. ==============================

    1.구분자의 OCT 코드를 지정해야합니다.

    구분자의 OCT 코드를 지정해야합니다.

    그것은입니다; 10 월 코드는 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;
    
  2. ==============================

    2.'\ n'에 의해 잘못 종료 됨

    '\ n'에 의해 잘못 종료 됨

    '\ n'에 의해 종료 된 권리

    'LINE'이 아닌 'LINE'

  3. ==============================

    3.간단한 대답은 ";" 이처럼 "\;" 그래서 당신의 라인은 '\;'에 의해 종료 된 행 형식 제한 필드 '\ n'으로 종료 된 행

    간단한 대답은 ";" 이처럼 "\;" 그래서 당신의 라인은 '\;'에 의해 종료 된 행 형식 제한 필드 '\ n'으로 종료 된 행

  4. ==============================

    4.BXDataSet이 존재하지 않으면 테이블 작성 (ISBN STRING 님, BookTitle STRING, BookAuthor STRING, YearOfPublication STRING, 게시자 STRING, 이미지 URL STRING, ImageURLM STRING, ImageURLL STRING) 주석 'BX- 책 테이블' '\ t'에 의해 종료 된 행 형식 제한 필드 '\ n'에 의해 종료 된 행  텍스트 파일로 저장;

    BXDataSet이 존재하지 않으면 테이블 작성 (ISBN STRING 님, BookTitle STRING, BookAuthor STRING, YearOfPublication STRING, 게시자 STRING, 이미지 URL STRING, ImageURLM STRING, ImageURLL STRING) 주석 'BX- 책 테이블' '\ t'에 의해 종료 된 행 형식 제한 필드 '\ n'에 의해 종료 된 행  텍스트 파일로 저장;

  5. from https://stackoverflow.com/questions/25684823/mismatchedtokenexception-on-hive-create-table-query by cc-by-sa and MIT license