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

  • 相关阅读:
    Asp.Net多线程用法1
    Asp.Net操作FTP方法
    django 利用PIL 保存图片
    django —— Celery实现异步和定时任务
    豆瓣源安装requirements.txt
    一个有趣的python排序模块:bisect
    Python 多线程
    python list元素为dict时的排序
    python版本坑:md5例子(python2与python3中md5区别)
    单独的 python 脚本文件使用 django 自带的 model
  • 原文地址:https://www.cnblogs.com/yy3b2007com/p/8315743.html
Copyright © 2011-2022 走看看