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

  • 相关阅读:
    android监控来电显示
    android 选择本地图片并预览
    解决android http请求带中文参数会乱码(url编码)
    android连接webservice是cookies和session保持方法
    eclipse中android自动补全/提示卡机或假死
    JS中创建类得几种方式
    AJAX的简单实例应用
    JavaScript中的eval函数的用法
    JSON 入门指南
    JS中关于clientWidth、offsetWidth、scrollWidth
  • 原文地址:https://www.cnblogs.com/yy3b2007com/p/8315743.html
Copyright © 2011-2022 走看看