hive 分区_Hive分区表和桶表的使用

我们看官网文档中这个地方

cb924a24e7072d9dfef26746f3aa91b5.png

我们先创建好数据库,以供练习

8e587172c90d335306d18ab970aab850.png

使用数据库

a55eab4f055c25051b3af3187c720c51.png

我们创建数据表

bc4e9dd66cb7edda7f6fc797b1a08833.png
f386afa2e3d1fdd01f5ae6a68eee017e.png

我们创建分区表,选取的字段不能是表中存在的字段

7da18037a03ad217c429ae8bd6d07611.png
45a27c0220339dccb1dca0b3c9362eba.png

元数据信息

c3c93488b4a9ba179e759854a4d78a6a.png

Formatted信息

e2256325be5bf49d3d338c55f35e6a04.png

那我们加载信息

load data local inpath '/data/hivetest/dept.txt' into table dept_partition partition(bmbh=1);

f5b6a32ca059b65d2da732c203318281.png

我们查看数据

4bc5fa92eb885992be37f6803d5282d5.png

我们看下HDFS上,是目录的形式

a3eb17ff0ff03a62ef9a9ec905ed1558.png
69787b8b11f688fd94cb5f1bcc6983fa.png

所以我们可以多加载几份数据

5211c10798bad3c6d83898f144557ba7.png
a3d56b2f55bfb875ac5daecdc93f1af5.png

查看数据和HDFS上

5966235efb990f8fb78e2bdb4fa9872c.png
233cbcd6511da633ce1f274b712e6be6.png

也可以创建二级分区

c2efb2c16eb5f87aeeeb10bee0cbc188.png
0a8d5d6c02e2e9212ca11f24824272c5.png

载入数据

a9a17e1e25360d418b8e3d0542a2a589.png
9a4a704f8c79d9e46152f0401a75b331.png

查看下数据

88f2cce3e674457425c5d5931ef87ebc.png

查看下元数据

268735ec38d91de860c6135009dbc2c2.png

再看下HDFS

0b9e2c1b20dbe57330d890a8f0defb90.png
7bf7f1f2399508c098ff46e999bf68e8.png
2031e0d49f03abc27e538097d86a7208.png
7e998587234db3534841d0a5f1cd2555.png

我们就可以依据条件查询使用where语句

36404993dadea5bfafc0470f01d5c4b1.png

注:分区表可以提高查询的效率。

我们再看这个地方-桶表

d32c26620cfa8dfbd53e04c64862c4aa.png

这个和分区表不一样的地方,选取字段必须是表里的字段

我们准备个员工表

7abdd5a349e1e5e5b847a3622f734c5f.png
08720162790604660578e8556f651312.png

我们创建下桶表

4d49b12ae04b1aa9026b745169e4b1eb.png
8235bb56005a99bd9b5383c013f4c8f4.png

我们加载下数据

c4d75a86ab598f732b3ee44dd3b05f30.png

看下HDFS

973d18bcad06c18fabf505beca9d8fdb.png

实际在桶表中,我们应该使用另外一种语句

b472a91fac695fea038638ca54cd2565.png

运行过程

5ec4eaaa7bafd6f48f0222455ab34152.png

出现了点问题

21dd048813750764bd692582a96493bc.png

三个节点时间不同步,设定下时间

date -s "2019-12-5 17:50:00"

再执行就可以了

14d858b381fba5b60bb501cd20f31236.png

查看结果

9a2d641692d692d04497399460bb153f.png

我们看HDFS上

aa989258ab9cf13f0fe793054b2f8454.png

我们查看下文件,已经分开了,如果有问题看看你的hive版本是否有这个属性没有打开。hive.enforce.bucketing。

6382d198b384f67cbbc68a3d35bccd0f.png

注:其中桶表查询还有下面的语句,可以仔细研究下,暂时先放一放,后续学习深入再了解。

Select * from table tablesample(bucket 1 out of 2)

Tablesample是抽样数据,语法tablesample(bucket x out of y)y必须是table总bucket数的倍数或者因子。Hive根据y的大小,决定抽样比例。例如:table总共分为64份,当y=32时,抽取(64/32)2个bucket数据;当y=128时,抽取(64/128)1/2个bucket数据,x表示从哪个bucket开始抽取,例如table总bucket数为32,tablesample(3 out of 16),表示总共抽取(32/16)2个bucket数据,分别为第3个bucket和第(3+16)19个bucket数据。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值