本文将与您分享Hive中静态分区和动态分区的示例分析。我觉得边肖很实用,就和大家分享一下作为参考。让我们跟着边肖看一看。
这是hive按分区存储数据的一种方式。使用列值作为目录来存储数据是一个分区。这样在查询时使用分区列进行过滤,只需要根据列值直接扫描对应目录中的数据,其他不关心的分区不扫描,快速定位,提高查询效率。有两种动态和静态分区:
1.静态分区:如果分区值一定,则称为静态分区。添加分区或加载分区数据时,已指定分区名称。
createtableifnotexistsday _ part 1(
uidint,
解除锁定
)
partitionedby(yearint,monthint)
row format delimiteedfieldsdterminatedby“”
;
# #加载数据以指定分区
loaddatalocalinpath '/root/Desktop/student . txt ' intotableday _ part 1 partition(年份=2017,月份=04);
# #添加分区指定分区名称。
alter tableday _ part 1 addpartition(年=2017,月=1)partition(年=2016,月=12);
2.动态分区:分区值不确定,由输入数据决定。
2.1动态分区的相关属性:
hive . exec . dynamic . partition=True :是否允许动态分区?
hive . exec . dynamic . partition . mode=strict:分区模式设置
严格:至少有一个分区需要是静态的。
Nostrict:可以是所有动态分区。
hive . exec . max . dynamic . partitions=1000:允许的最大动态分区数。
hive . exec . max . dynamic . partitions . pernode=100:映射器/缩减器在单个节点上允许的最大分区。
2.2动态分区的操作
# #创建临时表
createtableifnotexiststmp(
uidint,
commentidbigint,
推荐bigint,
yearint,
蒙提,
大印
)
row format delimiteedfieldsdterminatedby“”;
# #加载数据
loaddatalocalinpath '/root/Desktop/comm ' into table MP;
# #创建动态分区表
createtableifnotexistsdyp1(
uidint,
commentidbigint,
推荐bigint
)
partitionedby(yearint、monthint、dayint)
row format delimiteedfieldsdterminatedby“”
;
# #严格模式
insertintotabledyp1partition(年=2016年,月,日)
selectuid,commentid,recommentid,month,dayfromtmp
# #非严格模式
# #在非严格模式下设置动态分区
sethive . exec . dynamic . partition . mode=no strict;
# #创建动态分区表
createtableifnotexistsdyp2(
uidint,
commentidbigint,
推荐bigint
)
partitionedby(yearint、monthint、dayint)
row format delimiteedfieldsdterminatedby“”;
# #为非严格模式动态分区加载数据
插入tabledyp 2分区(年、月、日)
选择uid,commentid,recommentid,year,month,dayfromtmp
3.注意分区的细节
(1)尽量不要使用动态分区,因为动态分区时,会给每个分区分配减少器的数量。当分区数量较大时,减压器的数量会增加,这对服务器来说是一个灾难。
(2)动态分区与静态分区的区别,静态分区会创建有无数据的分区,动态分区会创建结果集,否则不会创建。
(3)hive动态分区的严格模式和hive提供的hive.mapred.mode的严格模式。
Hive为我们提供了一个严格的模式:为了防止用户意外提交恶意的hql
hive . mapred . mode=nostrict : strict
如果模式值严格,将阻止以下三种查询:
(1)、查询分区表,其中筛选字段不是分区字段。
(2)笛卡尔乘积的联接查询,联接查询语句,不带on条件或where条件。
(3)对于orderby查询,带有orderby的查询没有limit语句。
感谢阅读!我希望这篇关于“Hive中静态分区和动态分区的示例分析”的文章可以在这里分享
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/142070.html