Hive

2016-04-01 16 views
3

Boş NULL dönüştürmek Ben 'serialization.null.format' = '' özelliğini ayarlayarak boş değerlerini kovanındaki kaynak dosyada NULL dönüştürmek için çalışıyorum.Hive

create table test(a int, b string) stored as parquet TBLPROPERTIES('serialization.null.format'=''); 

Ve sonra böyle bir impala şey aracılığıyla bu işe değerleri eklemek: Ben kovanında yazdım sorgusudur

| a | b | 


| 1 | | 

| 2 | b | 
:

insert overwrite table test values (1, ''), (2, 'b'); 

Bunun sonucu böyle bir şey gösteriyor

Birisi bana boşta NULL'a dönüştürülmediği için bana yardım edebilir mi?

cevap

1

Sorun, Parke SerDe'dir. Sorunu https://issues.apache.org/jira/browse/HIVE-12362 numaralı telefondan görebilirsiniz. aşağıdaki gibi

açıklamasıdır:

create table src (a string); 
insert into table src values (NULL), (''), (''); 

0: jdbc:hive2://localhost:10000/default> select * from src; 
+-----------+--+ 
| src.a | 
+-----------+--+ 
| NULL  | 
|    | 
|    | 
+-----------+--+ 

create table dest (a string) row format serde 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe' stored as INPUTFORMAT 'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat'; 

alter table dest set SERDEPROPERTIES ('serialization.null.format' = ''); 
alter table dest set TBLPROPERTIES ('serialization.null.format' = ''); 
insert overwrite table dest select * from src; 

0: jdbc:hive2://localhost:10000/default> select * from test11; 
+-----------+--+ 
| test11.a | 
+-----------+--+ 
| NULL  | 
|    | 
|    | 
+-----------+--+ 
0

Böyle bir açıklama kullanarak tabloya ekleme deneyebilirsiniz:

CASE  
when TRIM(a) = '' 
THEN NULL 
ELSE a 
END,