[HADOOP] 하이브의 로컬 CSV에 따옴표가있는 값을 묶은 테이블 내보내기
HADOOP하이브의 로컬 CSV에 따옴표가있는 값을 묶은 테이블 내보내기
하이브에서 로컬 CSV 파일로 테이블을 내보내려고합니다.
INSERT OVERWRITE LOCAL DIRECTORY '/home/sofia/temp.csv'
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
ESCAPED BY '\\'
LINES TERMINATED BY '\n'
select * from mytable;
문제는 일부 값에 개행 문자 "\ n"이 포함되어 결과 파일이 정말로 엉망이된다는 것입니다.
csv 파일에 특수 문자 (특히 개행 문자)를 포함 할 수 있도록 Hive로 내보낼 때 값을 따옴표로 묶는 방법이 있습니까?
해결법
-
==============================
1.한 가지 가능한 솔루션은 Hive CSV SerDe (Serializer / Deserializer)를 사용하는 것입니다. 사용자 정의 구분 기호, 인용 부호 및 이스케이프 문자를 지정하는 방법을 제공합니다.
한 가지 가능한 솔루션은 Hive CSV SerDe (Serializer / Deserializer)를 사용하는 것입니다. 사용자 정의 구분 기호, 인용 부호 및 이스케이프 문자를 지정하는 방법을 제공합니다.
한정:
내장 된 개행 문자는 처리하지 않습니다.
유효성:
CSV Serde는 하이브 0.14 이상에서 사용할 수 있습니다.
배경:
CSV SerDe는 https://github.com/ogrodnek/csv-serde를 기반으로하며 HIVE-7777의 Hive 배포본에 추가되었습니다.
용법:
이 SerDe는 대부분의 CSV 데이터에서 작동하지만 내장 된 개행 문자는 처리하지 않습니다. SerDe를 사용하려면 org.apache.hadoop.hive.serde2.OpenCSVSerde의 정규화 된 클래스 이름을 지정하십시오.
원본 설명서는 https://github.com/ogrodnek/csv-serde에서 볼 수 있습니다.
CREATE TABLE my_table(a string, b string, ...) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde' WITH SERDEPROPERTIES ( "separatorChar" = "\t", "quoteChar" = "'", "escapeChar" = "\\" ) STORED AS TEXTFILE;
지정되지 않은 경우 기본 분리 기호, 인용 부호 및 이스케이프 문자
DEFAULT_ESCAPE_CHARACTER \ DEFAULT_QUOTE_CHARACTER " DEFAULT_SEPARATOR ,
참조 : 하이브 CSV-serde
from https://stackoverflow.com/questions/33254183/export-table-enclosing-values-with-quotes-to-local-csv-in-hive by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] 웹 사이트에서 데이터 스트림을 읽도록 스파크 스트리밍을 시도하는 중 소켓은 무엇입니까? (0) | 2019.07.31 |
---|---|
[HADOOP] 하이브는 distcp로 디렉토리 이동 프로세스를 덮어 씁니까? (0) | 2019.07.31 |
[HADOOP] PigLatin (Hadoop)으로 여러 파일로드 (0) | 2019.07.31 |
[HADOOP] 하이브 동시 매퍼를 4 개 이상으로 늘리는 방법은 무엇입니까? (0) | 2019.07.31 |
[HADOOP] 하둡에서 매퍼 출력이 저장되는 위치는 어디입니까? (0) | 2019.07.31 |