복붙노트

[HADOOP] Hive FAILED : ParseException 라인 2 : 0이 'macaddress'근처의 입력을 인식하지 못합니다 ''CHAR ''( '열 지정에서

HADOOP

Hive FAILED : ParseException 라인 2 : 0이 'macaddress'근처의 입력을 인식하지 못합니다 ''CHAR ''( '열 지정에서

하이브 -v -f sqlfile.sql 실행 해봤습니다.

다음은 파일의 내용입니다.

CREATE TABLE UpStreamParam (
'macaddress' CHAR(50),
'datats' BIGINT,
'cmtstimestamp' BIGINT,
'modulation' INT,
'chnlidx'   INT,
'severity' BIGINT,
'rxpower'  FLOAT,
'sigqnoise' FLOAT,
'noisedeviation'  FLOAT,
'prefecber'  FLOAT,
'postfecber'  FLOAT,
'txpower'  FLOAT,
'txpowerdrop' FLOAT,
'nmter'  FLOAT,
'premtter'  FLOAT,
'postmtter'  FLOAT,
'unerroreds'  BIGINT,
'corrected'  BIGINT,
'uncorrectables'  BIGINT)
STORED AS ORC TBLPROPERTIES ("orc.compress"="SNAPPY","orc.bloom.filters.columns"="macaddress")
PARTITIONED BY ('cmtsid' CHAR(50),' date' INT)
LOCATION '/usr/hive/warehouse/UpStreamParam' ;

그리고 나는 다음과 같은 오류가 나타납니다 :

해결법

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

    1.첫째, 열 이름은`(역 따옴표)가 아닌 '(작은 따옴표)로 묶어야합니다.

    첫째, 열 이름은`(역 따옴표)가 아닌 '(작은 따옴표)로 묶어야합니다.

    따라서 'mac address'를 'mac address'뿐만 아니라 다른 모든 컬럼 이름으로 대체해야합니다.

    둘째, STORED AS 및 TBLPROPERTIES 및 PARTITIONED BY 및 LOCATION의 순서가 잘못되었습니다. 올바른 순서는 PARTITIONED BY, STORED AS, LOCATION, TBLPROPERTIES입니다.

    자세한 내용은 하이브 언어 설명서를 참조하십시오. https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-CreateTable

    올바른 코드는 다음과 같습니다.

    CREATE TABLE UpStreamParam (
    `macaddress` CHAR(50),
    `datats` BIGINT,
    `cmtstimestamp` BIGINT,
    `modulation` INT,
    `chnlidx`   INT,
    `severity` BIGINT,
    `rxpower`  FLOAT,
    `sigqnoise` FLOAT,
    `noisedeviation`  FLOAT,
    `prefecber`  FLOAT,
    `postfecber`  FLOAT,
    `txpower`  FLOAT,
    `txpowerdrop` FLOAT,
    `nmter`  FLOAT,
    `premtter`  FLOAT,
    `postmtter`  FLOAT,
    `unerroreds`  BIGINT,
    `corrected`  BIGINT,
    `uncorrectables`  BIGINT)
    PARTITIONED BY (`cmtsid` CHAR(50), `date` INT)
    STORED AS ORC
    LOCATION '/usr/hive/warehouse/UpStreamParam'
    TBLPROPERTIES ("orc.compress"="SNAPPY","orc.bloom.filters.columns"="macaddress");
    
  2. ==============================

    2.CHAR 데이터 형식이 Hive 버전 0.13에서 지원되는 Hive 버전 때문에 문제가 발생할 수 있습니다.

    CHAR 데이터 형식이 Hive 버전 0.13에서 지원되는 Hive 버전 때문에 문제가 발생할 수 있습니다.

    낮은 버전을 사용하는 경우 string / varchar 데이터 유형을 사용해보십시오.

    참조하시기 바랍니다, https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Types#LanguageManualTypes-Char

  3. from https://stackoverflow.com/questions/32191404/hive-failed-parseexception-line-20-cannot-recognize-input-near-macaddress by cc-by-sa and MIT license