Hive 配置单元ORC表的serialization.null.format

Hive 配置单元ORC表的serialization.null.format,hive,orc,Hive,Orc,我有一个配置单元表,其中数据存储为ORC。 现在,当我在此表上运行select*查询时,我看到空字符串列在查询结果中显示为NULL。 我希望在配置单元查询结果中也将空字符串列显示为空字符串 我尝试了这两种方法,但仍然显示空值: ALTER TABLE temp_table set SERDEPROPERTIES ('serialization.null.format' = ""); ALTER TABLE temp_table set TBLPROPERTIES ('serialization.

我有一个配置单元表,其中数据存储为ORC。 现在,当我在此表上运行select*查询时,我看到空字符串列在查询结果中显示为NULL。 我希望在配置单元查询结果中也将空字符串列显示为空字符串

我尝试了这两种方法,但仍然显示空值:

ALTER TABLE temp_table set SERDEPROPERTIES ('serialization.null.format' = "");
ALTER TABLE temp_table set TBLPROPERTIES ('serialization.null.format' = "");
还尝试了单引号:

ALTER TABLE temp_table set SERDEPROPERTIES ('serialization.null.format' = '');
ALTER TABLE temp_table set TBLPROPERTIES ('serialization.null.format' = '');
配置单元表的存储属性:

# Storage Information        
SerDe Library:          org.apache.hadoop.hive.ql.io.orc.OrcSerde    
InputFormat:            org.apache.hadoop.hive.ql.io.orc.OrcInputFormat  
OutputFormat:           org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat     
Compressed:             No                       
Num Buckets:            -1                       
Bucket Columns:         []                       
Sort Columns:           []                       
Storage Desc Params:         
        serialization.format    1                   
        serialization.null.format

有没有办法解决这个问题?

AFAIK这些“序列化”道具适用于文本或序列文件格式;它们定义空值的存储方式,而不是显示方式。较新的、更复杂的行格式(AVRO)或列格式(ORC、Parquet)有自己的空值存储方式。此外,空值是SQL中的一个概念,甚至在此之前,已经存在了几十年。你不会改变这个概念来满足你的突发奇想。你可以做的是在创建ORC文件时处理空值,例如使用
INSERT。。。当ZZ为Null时选择case,然后选择“”else ZZ end…
,现在可以做的是在读取时以相同的方式处理Null。创建一个视图可能更容易(一次性定义转换)。嗨@James Isaac,你有没有得到更多关于这个的信息,可以分享?谢谢