Hive中静态分区与动态分区的示例分析

技术Hive中静态分区与动态分区的示例分析这篇文章给大家分享的是有关Hive中静态分区与动态分区的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。  分区是hive存放数据的一种方式。将

本文将与您分享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

(0)

相关推荐

  • 如何选择好的虚拟主机或者网站空间

    技术如何选择好的虚拟主机或者网站空间这篇文章主要为大家展示了“如何选择好的虚拟主机或者网站空间”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何选择好的虚拟主机或者网站空间”

    攻略 2021年11月1日
  • dickics,马丁靴品牌十大排名榜是怎样的

    技术dickics,马丁靴品牌十大排名榜是怎样的马丁靴品牌十大排名榜如下(名次不分先后)dickics: 1、Dr.Martens Dr.Martens的马丁靴,马丁靴鼻祖品牌,国内马丁靴名字的由来者,一般说马丁靴指的就

    2021年10月27日
  • linux命令中su和su -有什么区别

    技术linux命令中su和su -有什么区别这篇文章主要介绍了linux命令中su和su -有什么区别,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。简单俩

    攻略 2021年11月20日
  • keil如何下载至单片机(keil5 hex文件怎么下载到单片机)

    技术KeilC51基础中如何生成可以下载到单片机的Hex文件KeilC51基础中如何生成可以下载到单片机的Hex文件,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个

    攻略 2021年12月24日
  • Go语言中go build命令怎么用

    技术Go语言中go build命令怎么用这篇文章主要介绍了Go语言中go build命令怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。go buil

    攻略 2021年11月21日
  • mysql基础知识有哪些

    技术mysql基础知识有哪些本篇内容介绍了“mysql基础知识有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!第一章

    攻略 2021年11月18日