복붙노트

[HADOOP] 왜 FIELDS이있는 MySQL 등으로 동봉 한 하이브하지?

HADOOP

왜 FIELDS이있는 MySQL 등으로 동봉 한 하이브하지?

여기 내 경우는 다음과 같습니다

입력 라인 :

"vijay" <\t> "a-b-c","a-c-d","a-d-c" 

"kumar" <\t> "a-b-c","b-c-d""

나는이 같은 테이블을 생성 :

hive >create table user_infos(name string, path ARRAY<String>  --i need array only)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' COLLECTION ITEMS 
TERMINATED BY ',' LINES TERMINATED BY '\n' STORED AS TEXTFILE ;

출력받은 :

hive > select * from user_infos ;

"vijay"       ["**\"a-b-c\"**","**\"a-c-d\"**","**\"a-d-c\"**"]

"kumar"       ["**\"a-b-c\"**","**\"b-c-d\"**"] 

여기에 문제가 있습니다 : 내가 \, 즉 따옴표를 원하지 않는다 "

필수 출력 :

vijay   ["a-b-c","a-c-d","a-d-c"]  

kumar   ["a-b-c","b-c-d"] 

이 사용하지 않는 사용자 정의 Serde를 달성하기 위해 왜 어떤이있다. MySQL의에서 등으로 동봉 원하는 것은?

해결법

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

    1.내 필드는 큰 따옴표로 묶고 세미콜론으로 구분되어 나는이 같은 문제를 부착했다 (). 내 테이블 이름은 employee1입니다.

    내 필드는 큰 따옴표로 묶고 세미콜론으로 구분되어 나는이 같은 문제를 부착했다 (). 내 테이블 이름은 employee1입니다.

    그래서 링크를 검색하고 난 이것에 대한 완벽한 솔루션을 발견했다.

    @ ramisetty.vijay : 예, 우리는이에 대한 serde을 사용해야합니다. 이 링크를 사용하여 serde 항아리를 다운로드하십시오 https://github.com/downloads/IllyaYalovyy/csv-serde/csv-serde-0.9.1.jar

    다음 하이브 프롬프트를 사용하여 이하의 절차 :

    add jar path/to/csv-serde.jar;
    
    create table employee1(id string, name string, addr string)
    row format serde 'com.bizo.hive.serde.csv.CSVSerde'
    with serdeproperties(
    "separatorChar" = "\;",
    "quoteChar" = "\"")
    stored as textfile
    ;
    

    다음 쿼리 아래 사용하여 주어진 경로에서 데이터를로드 :

    load data local inpath 'path/xyz.csv' into table employee1;
    

    다음 실행 :

    select * from employee1;
    

    감사.

  2. from https://stackoverflow.com/questions/21156071/why-dont-hive-have-fields-enclosed-by-like-in-mysql by cc-by-sa and MIT license