您的位置:首页 > 其它

Hive应用:设置字段默认值

2018-08-11 10:36 2516 查看

Hive应用:设置字段默认值

介绍

有以下场景需要我们给字段添加默认值。
当我们清理了一些数据之后,数据的某些字段在数据中是没有的但是需要保留这个字段,那么我们将数据插入中转表中时,就需要给这个字段赋予默认值,来让语句正确执行。
本人知道的添加默认值的方法有以下两种:

直接量

在写插入语句的时候,可以直接在语句中将默认值写入。
例如:
insert into table User_Attribute select (row_number() over())+1000 as id,customid,0 as age from tbl_custom;

如上面的语句,清理的数据中没有年龄字段,而中转表中有这个字段,那么在插入的时候就直接将默认值0赋给这个字段。其他类型的直接量也一样。
示例:
hive> select * from person;
OK
1.0	张三	20.0	男	未知
2.0	李四	25.0	男	河北
3.0	张飞	30.0	男	河北
4.0	关羽	35.0	男	山东
5.0	小乔	38.0	女	浙江
6.0	刘备	40.0	男	成都
7.0	小李	29.0	男	江南

以上是本人hive中一个表中的数据,本人想把这个数据导入到另外一张表中,添加一个test int类型的字段,那么有如下操作:
hive> create table ren(id string,name string,age string,gender string,address string,test int) row format delimited fields terminated by '|';
OK
Time taken: 0.415 seconds
hive> insert into table ren select * , 0 as test from person;

执行完插入语句,我们看一下数据:
hive> select * from ren;
OK
1.0	张三	20.0	男	未知	0
2.0	李四	25.0	男	河北	0
3.0	张飞	30.0	男	河北	0
4.0	关羽	35.0	男	山东	0
5.0	小乔	38.0	女	浙江	0
6.0	刘备	40.0	男	成都	0
7.0	小李	29.0	男	江南	0
Time taken: 0.61 seconds, Fetched: 7 row(s)
hive>

插入成功,并且成功的增加了字段而且赋予了默认值。

内置函数

除了直接量的方法,我们还可以使用Hive的内置函数来做到这一点。
示例:
还是上面的例子,这次使用内置函数来完成,操作如下:
hive> insert into table ren select * , abs(0) as test from person;

这次使用的是求绝对值的函数,将这个值赋予test字段。
看一下数据:
hive> select * from ren;
OK
1.0	张三	20.0	男	未知	0
2.0	李四	25.0	男	河北	0
3.0	张飞	30.0	男	河北	0
4.0	关羽	35.0	男	山东	0
5.0	小乔	38.0	女	浙江	0
6.0	刘备	40.0	男	成都	0
7.0	小李	29.0	男	江南	0
1.0	张三	20.0	男	未知	0
2.0	李四	25.0	男	河北	0
3.0	张飞	30.0	男	河北	0
4.0	关羽	35.0	男	山东	0
5.0	小乔	38.0	女	浙江	0
6.0	刘备	40.0	男	成都	0
7.0	小李	29.0	男	江南	0
Time taken: 0.296 seconds, Fetched: 14 row(s)
hive>

数据也插入成功并赋予了默认值。
以上就是两种赋予字段默认值的方法。
上一篇:Hive应用:设置字段自增
下一篇:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: