Hive中的分区表
来源:互联网 发布:Linux命令如何更换壁纸 编辑:程序博客网 时间:2024/05/29 11:04
下午闲来无事,看了一下好久没有操作的分区表。代码这东西,长时间不写就容易生疏。
分区表是Hive的数据表中很重要的一种类型,在实际开发中应用很广,但是,由于其语法较为灵活,实际Coding时很容易出错。
于是,我将分区表的一些操作总结如下。
1、创建分区表t1,有id、day两个字段,其中day为分区字段
create table t1 (id int) partitioned by (day int);
2、将Linux本地文件中的数据加载到分区表中
load data local inpath '/home/tg/datas/f1' into table t1 partition (day=1);
3、创建一张外部表
create external table sogou (
time string,
uid string,
kw string,
rank int,
orders int,
url string
)
row format delimited
fields terminated by '\t'
location '/in/sogou';
4、加载数据到外部表sogou
load data local inpath '/home/tg/sogou.500w.utf8' into table sogou;
5、从sogou中查询5条rank数据,并将其插入到day=2的分区中
insert into table t1 partition(day=2) select rank from sogou limit 5;
6、从sogou表中查询rank=2和rank=3的数据,并将其分别插入到day=2和day=3的分区中
from sogou
insert overwrite table t1 partition(day=2) select rank where rank=2
insert overwrite table t1 partition(day=3) select rank where rank=3;
7、动态分区插入
所谓动态分区,指的是插入到目标表时,不指定分区值,仅指定分区字段;
分区值是从原始表中取得的。这就是动态指定分区,称作动态分区插入。
默认,Hive是支持动态分区插入的。
//允许动态分区
set hive.exec.dynamic.partition=true;
//在strict模式下,用户必须指定至少一个静态分区。关闭是nonstrict
sethive.exec.dynamic.partition.mode=nonstrict;
//每个mapper或者reducer可以创建的最大动态分区个数。
set hive.exec.max.dynamic.partitions.pernode=1000;
从sogou中查询10条orders、rank,并将其插入到t1表中
insert overwrite table t1 partition(day)
select orders, rank as day from sogou limit 10;
下面是查询语句的结果:
1 1
1 3
1 1
1 1
1 2
1 1
1 1
1 1
1 1
1 1
又创建了另一张分区表t2,此表有两个分区字段day、name
create table t2 (orders int) partitioned by(rank int,uid string);
从sogou中查询10条orders,rank as day,uid as name,并将其插入到t2表中
insert overwrite table t2 partition(rank,uid)
select orders,rank,uid from sogou;
显示t2表中的分区
show partitions t2;
8、总结:
使用from .. insert.. select ..where结构能够从一个数据表中抽取数据,
将结果插入到不同的表和分区中,
而使用动态分区能够让hive根据select最末几个位置的值自动设定目标分区的值,
使用动态分区需要设定一些hive运行参数。
- hive中的分区表
- Hive中的分区表
- Hive中的分区表
- hive 中的二级分区表和动态分区表
- hive中的内部表、外部表、分区表
- hive 分区表
- Hive分区表
- Hive分区表
- Hive分区表
- hive 分区表
- hive分区表
- hive分区表
- Hive静态分区表&动态分区表
- [Hive]Hive分区表新增字段
- hive sql分区表
- hive创建分区表问题
- hive sql分区表
- hive创建分区表问题
- 树莓派自启动
- Codeforces Round #408 (Div. 2) C. Bank Hacking 无根树、贪心、枚举
- iOS no summary
- Algorithm-Gossip(2) 费布拉切数列
- 汇编程序:植入程序的程序
- Hive中的分区表
- struts2入门
- shell基础编程——输出和输入
- 企业必备报表工具
- C#学习日记 对称密钥
- hdu 3790 最短路径问题
- 用况图的绘制
- 用Ajax方式提交数据给servlet
- hihocoder #1502 : 最大子矩阵