大数据应用之Hive应用:设置字段默认值

大数据应用之Hive应用:设置字段默认值

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>

数据也插入成功并赋予了默认值。

以上就是两种赋予字段默认值的方法。


分享到:


相關文章: