hive null和创建表的模板

最近,一直在写 hive

1)create_table LZO格式

1.  建议:shell名称为hive表名,采用此模板仅需二步 a) 编辑字段信息;b) 指定分区信息;

2.  运行shell,请使用全路径,如 sh/data3/dmp_online/dmp/dw/mds/purpow/create_table/mds_dm_purpow_source_his.sh;

3.  dm工作组时,${table_level}应修改为${project_name};

shell名称如果不是hive表名,请手工指定变量${table_name}、${table_level}。

#获取当前工作组(dw或dm)
echo ${0} | grep -q "/dmp/dm/"
if [ $? -eq 0 ]
then
    work_group="dm"
else
    work_group="dw"
fi
#加载配置文件
cd $(dirname `ls -l $0 |awk '{print $NF;}'`)/..
shellpath=`pwd|awk -F ${work_group} '{print $1}'`
cd ${shellpath}
. common/conf/.hive_config.sh
#table_level=mds
#table_name=mds_dm_purpow_his
#创建表信息
$HIVE<< EOF
use ${hive_db};
DROP TABLE ${table_name};
CREATE EXTERNAL TABLE ${table_name}
(
   cookie      string comment '用户COOKIE',
   price       int    comment '用户对应车型价格',
   source      int    comment '来源'
)
PARTITIONED BY(dt STRING, type STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n'
STORED AS INPUTFORMAT 'com.hadoop.mapred.DeprecatedLzoTextInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION '${HDFS_DIR}/${table_level}/${table_name}';
ALTER TABLE ${table_name} SET SERDEPROPERTIES('serialization.null.format'='');
EOF

create_tableRCFile格式: STORED AS RCFILE

create_tableTXT格式:STORED AS TEXTFILE

附:关于 hive null的问题:http://blog.csdn.net/yfkiss/article/details/7943053

hive中NULL默认是以'\N'表示的;可以通过ALTER TABLE table_name SET SERDEPROPERTIES('serialization.null.format' = '');修改空值描述符

hive中分区字段如果为NULL需注意
使用dynamic partition,如果分区字段为NULL,数据会放到一个特殊的分区,这个分区由参数“hive.exec.default.partition.name”控制,默认为“__HIVE_DEFAULT_PARTITION__”。



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值