2012-07-03 2 views
3

하이브 MR 작업에 대한 구분 기호를 구성 할 수있는 방법이 있습니까 ?? 하이브가 내부적으로 사용하는 기본 구분 기호는 "하이브 구분 기호"(/ 001)입니다. 내 유스 케이스는 필자가 요구 사항에 따라 구분 기호를 사용할 수 있도록 구분 기호를 구성하는 것입니다. hadoop에는 "mapred.textoutputformatter.separator"라는 속성이 있습니다.이 속성은 키 - 값 구분 기호를이 속성에 지정된 값으로 설정합니다. Hive에서 구분 기호를 구성하는 방법은 무엇입니까? ... 많이 찾았지만 ' 유용한 링크를 얻지 못합니다. 도와주세요.하이브 MR 작업에 대한 구분 기호 구성

답변

0

당신은 그것을 시도 할 수 있습니다 :

SELECT (rest of your query) 
ROW FORMAT DELIMITED 
    FIELDS TERMINATED BY 'YourChar' (example: FIELDS TERMINATED BY '\t') 
+0

빠른 응답을 보내 주셔서 감사합니다. 그러나 여기서 문제는 하이브 MR o/p를 dfs 위치에 쓰고 있다는 것입니다. 하이브가 구분 기호를 '\ 001'로 사용하는 경우 일부 속성을 설정하는 것처럼 명시 적으로 구성 할 수있는 방법이있을 수 있습니다. –

1

하이브 0.11.0로, 당신이

INSERT OVERWRITE LOCAL DIRECTORY '...' 
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' 
SELECT ... 

이 전체 구문에 대한 HIVE-3682를 참조 쓸 수 있습니다.

ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe' 
WITH SERDEPROPERTIES ('field.delim'='-','serialization.format'='-') 

이 사용 열을 구분하는 것입니다 - - 구분을하지만 에 LazSimpleSerde 특정 :

0

당신은이를 사용할 수 있습니다.

0

hdfs 파일에 쓰려면 INSERT OVERWRITE DIRECTORY 옵션을 사용하는 것 같습니다. hdfs 파일 위에 구분 기호없이 하이브 테이블을 만들면 '\ 001'이 구분 기호로 사용되므로 아무런 문제없이 파일을 하이브 테이블에서 읽을 수 있습니다.

0

원본 테이블을 dnt가 아닌 create schema 문에 구분 기호를 지정하면 변경할 수 없습니다. 운영자는 항상 기본값을 포함합니다. 네, 구분 기호는 소스 테이블에 대한 스키마 작성으로 제어됩니다. 그래서 구성 할 수 없습니다. 비슷한 문제가있어서 하이브 MR 작업을 마치면 001 단계를 두 번째 단계로 수정했습니다.