千家信息网

Hive的静态分区与动态分区的区别

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,本篇内容介绍了"Hive的静态分区与动态分区的区别"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.
千家信息网最后更新 2026年11月03日Hive的静态分区与动态分区的区别

本篇内容介绍了"Hive的静态分区与动态分区的区别"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

  1. 静态分区:若分区的值是确定的,那么称为静态分区。新增分区或者是加载分区数据时,已经指定分区名。

  create table if not exists day_part1(

  uid int,

  uname string

  )

  partitioned by(year int,month int)

  row format delimited fields terminated by '\t';

  ##加载数据指定分区

  load data local inpath '/root/Desktop/student.txt' into table day_part1

partition(year=2017,month=04);

  ##新增分区指定分区名

  alter table day_part1 add partition(year=2017,month=1)

partition(year=2016,month=12);

  2. 动态分区:分区的值是非确定的,由输入数据来确定

  2.1 动态分区的相关属性:

  hive.exec.dynamic.partition=true :是否允许动态分区

  hive.exec.dynamic.partition.mode=strict :分区模式设置

  strict:最少需要有一个是静态分区

  nostrict:可以全部是动态分区

  hive.exec.max.dynamic.partitions=1000 :允许动态分区的最大数量

  hive.exec.max.dynamic.partitions.pernode =100

:单个节点上的mapper/reducer允许创建的最大分区

  2.2 动态分区的操作

  ##创建临时表

  create table if not exists tmp

  (uid int,

  commentid bigint,

  recommentid bigint,

  year int,

  month int,

  day int)

  row format delimited fields terminated by '\t';

  ##加载数据

  load data local inpath '/root/Desktop/comm' into table tmp;

  ##创建动态分区表

  create table if not exists dyp1

  (uid int,

  commentid bigint,

  recommentid bigint)

  partitioned by(year int,month int,day int)

  row format delimited fields terminated by '\t';

  ##严格模式

  insert into table dyp1 partition(year=2016,month,day)

  select uid,commentid,recommentid,month,day from tmp;

  ##非严格模式

  ##设置非严格模式动态分区

  set hive.exec.dynamic.partition.mode=nostrict;

  ##创建动态分区表

  create table if not exists dyp2

  (uid int,

  commentid bigint,

  recommentid bigint)

  partitioned by(year int,month int,day int)

  row format delimited fields terminated by '\t';

  ##为非严格模式动态分区加载数据

  insert into table dyp2 partition(year,month,day)

  select uid,commentid,recommentid,year,month,day from tmp;

  3.分区注意细节

  (1)、尽量不要用动态分区,因为动态分区的时候,将会为每一个分区分配reducer数量,当分区数量多的时候,reducer数量将会增加,对服务器是一种灾难。

  (2)、动态分区和静态分区的区别,静态分区不管有没有数据都将会创建该分区,动态分区是有结果集将创建,否则不创建。

  (3)、hive动态分区的严格模式和hive提供的hive.mapred.mode的严格模式。

  hive提供我们一个严格模式:为了阻止用户不小心提交恶意hql

  hive.mapred.mode=nostrict : strict

  如果该模式值为strict,将会阻止以下三种查询:

  (1)、对分区表查询,where中过滤字段不是分区字段。

  (2)、笛卡尔积join查询,join查询语句,不带on条件或者where条件。

  (3)、对order by查询,有order by的查询不带limit语句。

"Hive的静态分区与动态分区的区别"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

动态 模式 静态 数据 查询 数量 分区表 最大 内容 字段 时候 更多 条件 知识 语句 实用 学有所成 接下来 会创 单个 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 深圳市人人互联网科技有限公司 互联网科技公司起名 科技互联网企业 科技金融是不是互联网金融 鸠鸠互联网科技 互联网下的科技发展 礼当家互联网科技 紫鲸互联网科技 狮子座互联网科技培训 左右互联网络科技 老年人脱离互联网科技的作文 济南华为互联网科技产业总部基地 新华互联网科技2019 互联网科技博主是什么意思 互联网科技热点资讯 互联网科技创新服务 岳阳华臻互联网科技有限公司 消费医药和互联网科技 互联网科技大奖都有哪些公司 互联网金融科技元年 互联网科技与金融科技 天扬科技互联网广告 互联网科技项目计划书材料类 河南猎农互联网科技有限公司 银川新华互联网科技学校联系电话 河南住房之家互联网科技 美国互联网科技实力 江苏互联网智能科技软件 兰石爱特工业互联网科技分公司 知域互联网科技有限公司官网
0