2017-10-06 39 views
0

그래서 내가 한 모든 연구 어디서나 HIVE에서 같은 문제를 볼 수 없었다. HIVE 2.1.1 표 생성 CSV-Serde

아래 링크를 따라 나는

https://github.com/ogrodnek/csv-serde

내 외부 테이블 작성은 아래 serde의 속성이 있습니다 .. 따옴표의 데이터와 아무런 문제가 없지만, 어떤 이유로, 기본 escapeChar ('\') 내 데이터 쌍 따옴표 (") 인 quoteChar에 의해 대체되고있다

CREATE EXTERNAL TABLE IF NOT EXISTS people_full(
`Unique ID` STRING, 
. 
. 
. 
. 
) 
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde' 
WITH SERDEPROPERTIES (
    "escapeChar" = "\\" 
) 
STORED AS TEXTFILE 

데이터 문제 :.

샘플 HDFS를 소스 데이터 : "\"는 사업을 대상 HIVE 출력을 훔치는 : "" "사업을 훔치는

그래서으로는 볼 세 따옴표"교체 후 사업을 훔치는 "는"열이 매우이다 (데이터 원치 않는 데이터의 한계를 일으키는 긴 문자열) HIVE는 데이터 내에서 세 개의 큰 따옴표를 처리 할 수 ​​없습니다 (따옴표 (")도 내 기본 따옴표 문자입니다)?

왜 이런 일이며, 해결책은 무엇입니까? 제발 도와 줘. 많이 고마워.

최저

, 아샤는

답변

0

는 그것이 작동에 의해 이스케이프와보십시오. 아래 스크린 샷의 예를 찾으십시오. enter image description here

+0

안녕하세요 @ kundam, 죄송합니다. "escapeChar"= "\\"다음 ("내 게시물에 언급 된 데이터 문제가"사용하고 있었으므로 "escapeChar"= 대체를 피하기 위해 "\ '"를 사용하지만 작동하지만 백 슬래시 인 기본 이스케이프 문자는 변경하고 싶지 않습니다. –

+0

내 실제 문제 ('\')가 기본 인용 문자로 바뀌므로이 알려진 문제는 HIVE 버전입니까? 도와 주셔서 감사합니다. –

+0

** 게시물을 ** [편집] **하고 실제 코드를 스크린 샷 대신 텍스트로 표시하십시오. 다른 사용자는 이미지에서 복사하여 붙여 넣을 수 없습니다. [자세한 내용은] (https://meta.stackoverflow.com/a/285557/1402846 참조)을 참조하십시오. 고맙습니다. – Pang

0

파일에서의 미세 및 디스플레이 각 레코드를 작동 외부 테이블을 만들 하이브에 쿼리를 데이터 사이에 이중 qoutes와 HDFS에 CSV 파일을 가져 와서 해당 파일에 대해 하이브 테이블을 생성, 따르십시오. 여기

create external table tablename (datatype colname,datatype2 colname2) row format 
SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde' WITH SERDEPROPERTIES 
("separatorChar" = ",","quoteChar" = "\"") stored as textfile location '/dir_name/'; 

에서, TABLENAME 테이블의 이름을 나타냅니다, 데이터 형식은 문자열, INT 아니면 다른과 COLNAME처럼 당신이 제공하고자하는 컬럼의 이름을 나타냅니다 그리고 마지막으로 만약 DIR_Name는 CSV 또는 텍스트 파일의 위치입니다 hdfs 위치에 있습니다.