zoukankan      html  css  js  c++  java
  • hive:导出数据记录中null被替换为 的解决方案

    在hive中,一般情况下通过

    1 use my_hive_db;
    2 set hive.merge.mapfiles=true;
    3 set hive.merge.mapredfiles=true;
    4 set hive.merge.size.per.task= 1000000000;
    5 set hive.merge.smallfiles.avgsize= 1000000000;
    6 insert overwrite directory '/user/myuser/temp/scenemapbuild/' row format delimited fields terminated by ',' select * from scenemapbuild;

    导出文件时,会遇本来表中本来字段值为null的字段导出时为 。

    解决方案:

    1 insert overwrite directory '/data/files/map_table_4'
    2 ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'
    3 WITH SERDEPROPERTIES (
    4 'field.delim'=',',
    5 'serialization.format'= '',
    6 'serialization.null.format'=''  
    7 ) STORED AS TEXTFILE
    8 select foo, null, bar from map_table;

    备注:

    1)设置 alter table name SET SERDEPROPERTIES('serialization.null.format' = 'N'); 

    则:底层数据保存的是'N',通过查询显示的是'NULL'
    这时如果查询为空值的字段可通过 语句:a is null 或者 a='\N'

    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 查询。

  • 相关阅读:
    wonderful life
    .net 4.5 webform 提取ModelState错误信息
    asp.net core Theme 中间件
    asp.net mvc 动态编译生成Controller
    asp.net mvc中换肤机制类库 ThemedViewEngines
    vs code 添加jquery的智能提示
    vs2017 iisexpress 绑定自定义域名
    asp.net Mvc 动态创建Controller
    查询Windows api
    预先创建占用一定磁盘空间的文件(使用C#)
  • 原文地址:https://www.cnblogs.com/yy3b2007com/p/8315743.html
Copyright © 2011-2022 走看看