栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

HIVE HDFS对NULL值处理

HIVE HDFS对NULL值处理

hive 写入null后在hdfs 中显示N 存储,如果直接读取hdfs则会直接读到N数值

如何解决这个问题,需要对表属性中的null值存储进行修改,具体的表serialization.null.format可以在desc formatted 查询具体表属性

Storage Desc Params:		
	serialization.format	1                   
	serialization.null.format	N  

场景构建:

临时表创建

CREATE TABLE `test_null_case_data`(
  `id` int, 
  `id_name` string)
ROW FORMAT SERDE 
  'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe' 
STORED AS INPUTFORMAT 
  'org.apache.hadoop.mapred.TextInputFormat' 
OUTPUTFORMAT 
  'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
  'test_null_case_data'

写入测试数据:

insert overwrite table test_null_case_data
select 2 as id,'jie' as id_name
union all 
select 1 as id,null as id_name

 查询数据结果

select * from test_null_case_data

id id_name
2   jie
1   

dfs -cat test_null_case_data/000000_0
2<0x01>jie
1<0x01>N

 注:可以看到在结果表里面查询是正常了显示null值,但是在hdfs的文件中显示的为N的结果。如果数据走文件处理的话,访问程序需要处理N,或者调整表null值存储处理。

解决方案:

创建表时可以设变null存储类型,或者建表后修改null特性

创建表时可以指定:

ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'
with serdeproperties('serialization.null.format' = '')
或
ROW FORMAT DELIMITED NULL DEFINED AS ''

完整语句
CREATE TABLE `test_null_case_data`(
  `id` int, 
  `id_name` string)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'
with serdeproperties('serialization.null.format' = '')
STORED AS INPUTFORMAT 
  'org.apache.hadoop.mapred.TextInputFormat' 
OUTPUTFORMAT 
  'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
  'test_null_case_data'

 创建表后alter指定:(修改特性后表hdfs数据内容不会变,需要重新插入数据)

alter table test_null_case_data SET SERDEPROPERTIES('serialization.null.format' = '')

 除了以null值修改成空字符串还有其他形式:N,'',NULL

每个null值的表示对应的修改和查询都有所差异:

设置 SET SERDEPROPERTIES('serialization.null.format' = '');
查询显示为空字符串'',文件查询显示:''

设置 SET SERDEPROPERTIES('serialization.null.format' = 'NULL');
查询显示为空字符串'',文件查询显示:NULL

设置 SET SERDEPROPERTIES('serialization.null.format' = 'N'); 
查询显示为空字符串'',文件查询显示:N

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/282903.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号