2013-10-21 3 views
1

현재 Amazon EMR에서 HIVE 0.7 인스턴스가 있습니다. Hive 0.11을 사용하여 새 EMR 클러스터에서이 인스턴스의 복제본을 만들려고합니다.HIVE 외부 테이블 - 빈 문자열을 NULL로 설정하십시오.

내 0.7 인스턴스에는 NULL로 빈 문자열을 설정할 외부 테이블이 있습니다.

CREATE EXTERNAL TABLE IF NOT EXISTS tablename 
(column1 string, 
column2 string) 
PARTITIONED BY (year STRING, month STRING, day STRING) 
ROW FORMAT DELIMITED 
FIELDS TERMINATED BY '\t' 
LINES TERMINATED BY '\n' 
TBLPROPERTIES ('serialization.null.format' = ''); 

데이터는 다음과 같이 테이블에 추가됩니다 :

ALTER TABLE tablename 
ADD PARTITION (year = '2013', month = '10', day='01') 
LOCATION '/location_in_hdfs'; 

이 0.7에서 잘 작동하지만 0.11에 내 빈 문자열을 평가하지 않는 것 여기에 내가 테이블을 생성하는 방법이다 NULLS. 흥미롭게도 같은 데이터와 테이블 정의로 일반 테이블을 만들면 빈 문자열을 예상대로 NULL로 평가하는 것으로 보입니다.

0.11에서 외부 테이블을 사용하는 다른 방법이 있습니까?

답변

0

하이브 기본 파티션 속성이 테이블 속성을 재정의합니다. alter 문에 SERDE 속성을 포함하십시오 :

ALTER TABLE tablename ADD PARTITION (year = '2013', month = '10', day='01') SET 
SERDEPROPERTIES ('serialization.null.format' = ''); 
관련 문제