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

  • 相关阅读:
    零拷贝报文捕获平台
    Table of Contents ---BCM
    bcm cmd
    Linux常用性能调优工具索引
    Vue params传值的坑
    安装了新的angular版本后无法运行老的angular版本项目
    后端返回的数据与前端console.log数据不一致问题
    门户页跳转页面 跳转指定的页面 接口会变成路由去显示 而不是显示组件
    配置git ssh 密钥
    grafana环境变量
  • 原文地址:https://www.cnblogs.com/yy3b2007com/p/8315743.html
Copyright © 2011-2022 走看看