복붙노트

[HADOOP] 멀티 문자 구분 기호로 하이브 테이블 만들기

HADOOP

멀티 문자 구분 기호로 하이브 테이블 만들기

다중 문자열 문자를 구분 기호로 사용하여 HIVE 테이블을 만들고 싶습니다.

CREATE EXTERNAL TABlE tableex(id INT, name STRING) 
ROW FORMAT delimited fields terminated by ','
LINES TERMINATED BY '\n' STORED AS TEXTFILE LOCATION '/user/myusername';

구분 기호를 "~ *"와 같은 다중 문자열로 사용하고 싶습니다.

해결법

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

    1.FIELDS TERMINATED BY는 복수 문자 분리 문자를 지원하지 않습니다. 가장 쉬운 방법은 RegexSerDe를 사용하는 것입니다.

    FIELDS TERMINATED BY는 복수 문자 분리 문자를 지원하지 않습니다. 가장 쉬운 방법은 RegexSerDe를 사용하는 것입니다.

    CREATE EXTERNAL TABlE tableex(id INT, name STRING) 
    ROW FORMAT 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe'
    WITH SERDEPROPERTIES (
      "input.regex" = "^(\\d+)~\\*(.*)$"
    )
    STORED AS TEXTFILE 
    LOCATION '/user/myusername';
    
  2. ==============================

    2.MultiDelimitSerde를 사용하십시오.

    MultiDelimitSerde를 사용하십시오.

    CREATE EXTERNAL TABlE tableex(id INT, name STRING) 
    ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.MultiDelimitSerDe' 
    WITH SERDEPROPERTIES ("field.delim"="~*")
    STORED AS TEXTFILE
    LOCATION '/user/myusername';
    
  3. from https://stackoverflow.com/questions/18931427/create-hive-table-with-multi-character-delimiter by cc-by-sa and MIT license