복붙노트

[HADOOP] 하이브에 데이터를로드하는 동안 주변 인용 부호를 필드에서 제거하십시오.

HADOOP

하이브에 데이터를로드하는 동안 주변 인용 부호를 필드에서 제거하십시오.

하이브에 입력 데이터가있는 테이블을로드하려고합니다. 다음 형식의 데이터가 있습니다.

"153662";"0002241447";"0"
"153662";"000647036X";"0"
"153662";"0020434901";"0"
"153662";"0020973403";"0"
"153662";"0028604202";"0"
"153662";"0030437512";"0"

이 데이터를 두 개의 varchar 열과 하나의 int 열로 테이블에로드하려고합니다. 그러나 주위의 큰 따옴표로 인해 문제가 발생합니다. 다음 표를 만들었습니다.

CREATE EXTERNAL TABLE Table(A varchar(50),B varchar(50),C varchar(50))
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\;'
LINES TERMINATED BY '\n'

STORED AS TEXTFILE

필드 주위의 따옴표는 아래에 표시된 것처럼 필드의 일부가됩니다.

"276725"    "034545104X"    "0"
"276726"    "0155061224"    "5"

나는 그들을 무시하고 싶다. 또한 세 번째 필드를 INT로 읽으 려합니다. 현재 테이블을 만드는 동안 INT로 세 번째 필드를 제공하면 NULL이됩니다.

해결법

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

    1.이 경우 Csv-Serde를 사용해야합니다.

    이 경우 Csv-Serde를 사용해야합니다.

    CREATE TABLE Table(A varchar(50),B varchar(50),C varchar(50))
    ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
    WITH SERDEPROPERTIES 
    (
        "separatorChar" = ";",
        "quoteChar"     = "\""
    )  
    STORED AS TEXTFILE;
    
  2. ==============================

    2.이를 달성하는 여러 가지 방법 :

    이를 달성하는 여러 가지 방법 :

  3. from https://stackoverflow.com/questions/38617824/remove-surrounding-quotes-from-fields-while-loading-data-into-hive by cc-by-sa and MIT license