Hive 配置单元ORC表的serialization.null.format
我有一个配置单元表,其中数据存储为ORC。 现在,当我在此表上运行select*查询时,我看到空字符串列在查询结果中显示为NULL。 我希望在配置单元查询结果中也将空字符串列显示为空字符串 我尝试了这两种方法,但仍然显示空值: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.
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,你有没有得到更多关于这个的信息,可以分享?谢谢