hive:导出数据记录中null被替换为n的解决⽅案在hive中,⼀般情况下通过
1use my_hive_db;
mapfiles=true;
mapredfiles=true;
size.per.task=1000000000;
smallfiles.avgsize=1000000000;
6insert overwrite directory '/user/myuser/temp/scenemapbuild/' row format delimited fields terminated by','select*from scenemapbuild;导出⽂件时,会遇本来表中本来字段值为null的字段导出时为\n。
解决⽅案:
1insert overwrite directory '/data/files/map_table_4'
2 ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'
3WITH SERDEPROPERTIES (
4'field.delim'=',',
5'serialization.format'='',
6'serialization.null.format'=''
7 ) STORED AS TEXTFILE
8select foo, null, bar from map_table;
备注:
1)设置 alter table name SET SERDEPROPERTIES('serialization.null.format' = '\N');
则:底层数据保存的是'\N',通过查询显⽰的是'NULL'
这时如果查询为空值的字段可通过 语句:a is null 或者 a='\\N'
isnull的用法2)设置 alter tablename SET SERDEPROPERTIES('serialization.null.format' = 'NULL');
则:底层数据保存的是'NULL',通过查询显⽰的是'NULL'
这时如果查询为空值的字段可通过 语句:a is null 或者 a='NULL'
3)设置 alter tablename SET SERDEPROPERTIES('serialization.null.format' = '');
则:底层数据保存的是'',通过查询显⽰的是'NULL'
'' 与 length(xx)=0
'' 表⽰的是字段不为null且为空字符串,此时⽤ a is null 是⽆法查询这种值的,必须通过 a='' 或者 length(a)=0 查询。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。