文章目录

  • 什么是Hive的分区
    • 分区意义
    • 分区技术
    • 分区方法和本质
    • 创建一级分区表
    • 创建二级分区表
  • 如何修改Hive的分区
    • 查看分区
    • 添加分区
    • 分区名称修改
    • 修改分区路径
    • 删除分区
    • 分区类别
    • hive的严格模式
      • 笛卡尔积
      • 分区表没有分区字段过滤
      • order by不带limit查询
      • bigint和string比较
      • bigint和double比较
    • hive读写模式:

什么是Hive的分区

分区意义

hive分区的意义是避免全表扫描,从而提高查询效率。默认使用全表扫描。

分区技术

[PARTITIONED BY (COLUMNNAME COLUMNTYPE [COMMENT 'COLUMN COMMENT'],...)]

1、hive的分区名区分大小写
2、hive的分区字段是一个伪字段,但是可以用来进行操作
3、一张表可以有一个或者多个分区,并且分区下面也可以有一个或者多个分区。
4、分区字段使用表外字段

分区方法和本质

分区的方式:使用日期、地域等方式将数据分散开
分区的本质:在表的目录或者是分区的目录下再创建目录,分区的目录名为指定字段=值(比如:dt=2019-09-09)

创建一级分区表

create table if not exists part1(
id int,
name string
)
partitioned by (dt string) row format delimited fields terminated by ' ';

加载数据

load data local inpath '/home/hivedata/t1' overwrite into  table part1 partition(dt='2019-09-09');
load data local inpath '/hivedata/user.txt' into table part1 partition(dt='2018-03-20');

查询语句

select * from part1 where dt='2018-03-20'

创建二级分区表

create table if not exists part2(
id int,
name string
)
partitioned by (year int,month int) row format delimited fields terminated by ' ';

加载数据

load data local inpath '/home/hivedata/t1' overwrite into  table part2 partition(year=2019,month=9);
load data local inpath '/home/hivedata/t' overwrite into  table part2 partition(year=2019,month=10);

查询语句

select * from part2 where year=2019 and month=10;

如何修改Hive的分区

查看分区

show partitions 表名;

添加分区

alter table part1 add partition(dt='2019-09-10');
alter table part1 add partition(dt='2019-09-13') partition(dt='2019-09-12');
alter table part1 add partition(dt='2019-09-11') location  '/user/hive/warehouse/qf1704.db/part1/dt=2019-09-10';

分区名称修改

alter table part1 partition(dt='2019-09-10') rename to partition(dt='2019-09-14');

修改分区路径

--错误使用
alter table part1 partition(dt='2019-09-14') set location '/user/hive/warehouse/qf24.db/part1/dt=2019-09-09';
--正确使用,决对路径
alter table part1 partition(dt='2019-09-14') set location 'hdfs://hadoo01:9000/user/hive/warehouse/qf24.db/part1/dt=2019-09-09';

删除分区

alter table part1 drop partition(dt='2019-09-14');
alter table part1 drop partition(dt='2019-09-12'),partition(dt='2019-09-13');

分区类别

静态分区:加载数据到指定分区的值。
动态分区:数据未知,根据分区的值来确定需要创建的分区。
混合分区:静态和动态都有。

set hive.exec.dynamic.partition=true
set hive.exec.dynamic.partition.mode=strict/nonstrict
set hive.exec.max.dynamic.partitions=1000
set hive.exec.max.dynamic.partitions.pernode=100

strict:严格模式必须至少一个静态分区
nostrict:可以所有的都为动态分区,但是建议尽量评估动态分区的数量。

使用案例:

create table dy_part1(
id int,
name string
)
partitioned by (dt string)
row format delimited fields terminated by ' '
;load data local inpath '/home/hivedata/t1' overwrite into  table dy_part1 partition(dt='2019-09-09');set hive.exec.mode.local.auto=true;
insert into table dy_part1 partition(dt)
select
id,
name,
dt
from part1
;混合分区:
create table if not exists dy_part2(
id int,
name string
)
partitioned by (year int,month int)
row format delimited fields terminated by ' '
;set hive.exec.mode.local.auto=true;
set hive.exec.dynamic.partition.mode=strict;
insert into table dy_part2 partition(year=2019,month)
select
id,
name,
month
from part2
where year=2019
;

hive的严格模式

 <property><name>hive.mapred.mode</name><value>nonstrict</value><description>The mode in which the Hive operations are being performed.In strict mode, some risky queries are not allowed to run. They include:Cartesian Product.No partition being picked up for a query.Comparing bigints and strings.Comparing bigints and doubles.Orderby without limit.</description></property>

笛卡尔积

set hive.mapred.mode=strict;
select
*
from dy_part1 d1
join dy_part2 d2
;

分区表没有分区字段过滤

set hive.mapred.mode=strict;
select
*
from dy_part1 d1
where d1.dt='2019-09-09'
;不行
select
*
from dy_part1 d1
where d1.id > 2
;select
*
from dy_part2 d2
where d2.year >= 2019
;

order by不带limit查询

select
*
from log3
order by id desc
;

bigint和string比较

(bigint和string比较)Comparing bigints and strings.

bigint和double比较

(bigint和double比较)Comparing bigints and doubles.

hive读写模式:

Hive是一个严格的读时模式。 写数据不管数据正确性,读的时候,不对则用NULL替代。
mysql是一个的写时模式。 写的时候检查语法,不okay就会报错。

load data local inpath '/home/hivedata/t' into  table t_user;
insert into stu(id,sex) value(1,abc);

HIve学习:Hive分区修改相关推荐

  1. hive学习(5)--- Partitions分区的使用(包括动态分区)

    下面这个文章很好的讲解了Partitions的使用方法 http://www.aahyhaa.com/archives/316 其他参考文章: http://p-x1984.iteye.com/blo ...

  2. Hadoop生态组件-HIVE学习

    本文将Hadoop生态圈中的一个重要组件Hive.内容包括安装,运行测试,使用MySQL存储Hive的matedata, 还包括其他使用Hive的知识,比如数据分区等.本文是本人学习Hive过程中的记 ...

  3. HIVE学习系列——Hive操作

    文章目录 Hive表介绍 基本句法-创建新表: Demo运行(以实际使用中的常用句法为编写规范): Q&A 基本句法-向table添加数据 Demo运行(承接创建的表) Q&A 基本句 ...

  4. 深入浅出学习Hive

    本文是基于CentOS 7.9系统环境,进行hive的学习和使用 一.Hive的简介 1.1 Hive基本概念 (1) 什么是hive Hive是用于解决海量结构化日志的数据统计工具,是基于Hadoo ...

  5. Hive学习笔记(1)基本操作

    hive学习官方网站: General Info ============ For the latest information about Hive, please visit out websit ...

  6. 最全的Hive学习笔记

    最全的Hive学习笔记 1. 什么是hive 1.1. hive基本思想 1.2 为什么使用Hive 1.3. Hive的特点 2. hive的基本架构 3. hive安装 3.1. 最简安装:用内嵌 ...

  7. Hive—学习笔记(一)

    主要内容: 1.Hive的基本工能机制和概念 2.hive的安装和基本使用 3.HQL 4.hive的脚本化运行使用方式 5.hive的基本语法--建表语法 6.hive的基本语法--内部表和外部表. ...

  8. Hive学习笔记总结

    Hive Hive定义 Hive优缺点 Hive架构 Hive和数据库的区别 Hive元数据包括哪些,存在哪里? Hive中的数据库 建表语句 内部表外部表区别 往表中添加数据的5种方式 往分区中添加 ...

  9. 一起学习Hive基础(多知识点)

    操作系统:CentOS-7.8 单机Hadoop版本:2.8.5 Hive版本:2.3.6 本文是Hive学习的基础篇,包含Hive的部分基础理论知识如:hive介绍,Hive应用场景,Hive的文件 ...

  10. 大数据数据仓库——hive学习权威指南

    友情提示:更多有关大数据.人工智能方面技术文章请关注博主个人微信公众号:大数据分析爱好者社区! 学习hive权威指南 目录: ETL介绍 大数据平台架构概述 系统数据流动 hive概述 hive在ha ...

最新文章

  1. 如何保护Ubuntu 16.04上的NGINX Web服务器
  2. AirPods Pro真香,送一款!
  3. OC__part11.2
  4. 力扣3. 无重复字符的最长子串 two pointer算法|滑动窗口|尺取法
  5. 阿里云java mysql环境_阿里云搭建centos java mysql nginx环境
  6. 链表操作时头结点的好处
  7. php pcre回溯攻击,PHP利用PCRE回溯次数限制绕过某些安全限制 | 码农网
  8. 湖北省金税盘服务器链接网站,湖北省网上税务局入口:https://wsswj.hb-n-tax.gov.cn...
  9. H5唤起APP客户端
  10. 通信用水泥杆和防腐木电杆在使用中有什么不同
  11. 台式机装苹果系统_关于最近折腾黑苹果的一些心得分享
  12. api存在csrf攻击吗_使用rest api防止单页应用上的csrf攻击
  13. VirtualBox Guest Additions
  14. Surface实现TF卡槽引导Ventoy加载Fydeos,不格式化硬盘,不重装Windows!
  15. 解析人工智能与人类智慧的求同存异
  16. Linux内核编译——Uboot
  17. python poisson图像融合制作CSDN博客头像
  18. 神经结构搜索资料NAS
  19. 虽败犹荣的McCain
  20. 电脑如何查看及开启虚拟化

热门文章

  1. 碗都交出去了,能不能分到羹?
  2. 一生一世高圆圆经典台词
  3. 向朋友借钱:文章值得一读,让人思索良久
  4. BAP 使用DYNP_VALUES_READ来获取屏幕字段值
  5. 自嘲尾款人、丁工人?今年双十一就没想让你做人
  6. android+note2+分辨率,魅蓝Note2的屏幕尺寸是多少?魅蓝Note2的分辨率是多少?
  7. 针对Python中冒号的详细解释
  8. python文件和目录操作方法大全(含实例)
  9. python print %s 号格式化输出
  10. python实现单链表与双向链表