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

  • 相关阅读:
    Django之admin
    Django之CSRF(跨站请求伪造)
    Django之Cookie
    Django之Session
    Django|第一部
    简单的udp消息收发
    .net core里使用ado.net访问sqlserver数据库
    CentOS8中安装SQLServer
    CentOS里配置.net core运行环境(含后台运行,附ssh长连接)
    发布"dotNet core"到CentOS8
  • 原文地址:https://www.cnblogs.com/yy3b2007com/p/8315743.html
Copyright © 2011-2022 走看看