2016-08-17 4 views
0

명령 줄을 사용하여 로컬의 CSV 파일에 쓰는 하이브 테이블이 있습니다. CSV 하이브 - 특수 문자 처리

hive -e 'select * from my_Table' | sed 's/[\t]/,/g' > /home/myfile.csv 

그러나 출력 csv 파일에

는 특수 문자를 포함하는 기록이 어떻게 든 새로운 라인으로 분할되는 경우 안 : 나는 다음과 같은 코드를 사용하고 있습니다.

Rohan,Kurunäs à 
korson,[email protected],+1 11 111 18 00,VÃâSTERÃâ¦S,Sweden,SvalgÃ¥ngen 

도움이 될 것입니다 !!

+1

** 코드 페이지 변환 문제 **처럼 보입니다. Hadoop은 UTF-8에서 작동하지만 CSV를보고있는 시스템이 UTF-8을 사용하지 않음을 분명히 알 수 있습니다. 'file myfile.csv'를 실행하여 진단을 얻고 UTF-8 문자를 시스템이 지원하는 것으로 변환하는'iconv '(예 : Windows-1252)로 실험하십시오. –

+0

그리고 줄 바꿈을 유발하는 특수 문자가 실제로있는 경우 심각한 텍스트 편집기 (예 : Notepad ++) 및 16 진수 덤프 기능을 사용하여 파일을보고 불량 문자를 식별하여 'tr'할 수있게하십시오. 하드 코어 리눅스 사용자는 16 진 덤프에'od -cx'를 사용할 것이지만 분명히 거기 있지 않습니다. –

답변

0

CTAS를 사용하여 CSV 파일을 만들고 CopyToLocal 명령을 사용하여 파일을 원하는 위치에 복사하는 것이 좋습니다.

set mapreduce.job.reduces=1; 
create table mytmptable ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' location 'hdfs://mylocation' as select * from my_Table; 
drop table mytmptable; 

감속기 수를 1로 설정하면 하나의 파일이 생성됩니다.