HIve学习:Hive分区修改
文章目录
- 什么是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分区修改相关推荐
- hive学习(5)--- Partitions分区的使用(包括动态分区)
下面这个文章很好的讲解了Partitions的使用方法 http://www.aahyhaa.com/archives/316 其他参考文章: http://p-x1984.iteye.com/blo ...
- Hadoop生态组件-HIVE学习
本文将Hadoop生态圈中的一个重要组件Hive.内容包括安装,运行测试,使用MySQL存储Hive的matedata, 还包括其他使用Hive的知识,比如数据分区等.本文是本人学习Hive过程中的记 ...
- HIVE学习系列——Hive操作
文章目录 Hive表介绍 基本句法-创建新表: Demo运行(以实际使用中的常用句法为编写规范): Q&A 基本句法-向table添加数据 Demo运行(承接创建的表) Q&A 基本句 ...
- 深入浅出学习Hive
本文是基于CentOS 7.9系统环境,进行hive的学习和使用 一.Hive的简介 1.1 Hive基本概念 (1) 什么是hive Hive是用于解决海量结构化日志的数据统计工具,是基于Hadoo ...
- Hive学习笔记(1)基本操作
hive学习官方网站: General Info ============ For the latest information about Hive, please visit out websit ...
- 最全的Hive学习笔记
最全的Hive学习笔记 1. 什么是hive 1.1. hive基本思想 1.2 为什么使用Hive 1.3. Hive的特点 2. hive的基本架构 3. hive安装 3.1. 最简安装:用内嵌 ...
- Hive—学习笔记(一)
主要内容: 1.Hive的基本工能机制和概念 2.hive的安装和基本使用 3.HQL 4.hive的脚本化运行使用方式 5.hive的基本语法--建表语法 6.hive的基本语法--内部表和外部表. ...
- Hive学习笔记总结
Hive Hive定义 Hive优缺点 Hive架构 Hive和数据库的区别 Hive元数据包括哪些,存在哪里? Hive中的数据库 建表语句 内部表外部表区别 往表中添加数据的5种方式 往分区中添加 ...
- 一起学习Hive基础(多知识点)
操作系统:CentOS-7.8 单机Hadoop版本:2.8.5 Hive版本:2.3.6 本文是Hive学习的基础篇,包含Hive的部分基础理论知识如:hive介绍,Hive应用场景,Hive的文件 ...
- 大数据数据仓库——hive学习权威指南
友情提示:更多有关大数据.人工智能方面技术文章请关注博主个人微信公众号:大数据分析爱好者社区! 学习hive权威指南 目录: ETL介绍 大数据平台架构概述 系统数据流动 hive概述 hive在ha ...
最新文章
- 如何保护Ubuntu 16.04上的NGINX Web服务器
- AirPods Pro真香,送一款!
- OC__part11.2
- 力扣3. 无重复字符的最长子串 two pointer算法|滑动窗口|尺取法
- 阿里云java mysql环境_阿里云搭建centos java mysql nginx环境
- 链表操作时头结点的好处
- php pcre回溯攻击,PHP利用PCRE回溯次数限制绕过某些安全限制 | 码农网
- 湖北省金税盘服务器链接网站,湖北省网上税务局入口:https://wsswj.hb-n-tax.gov.cn...
- H5唤起APP客户端
- 通信用水泥杆和防腐木电杆在使用中有什么不同
- 台式机装苹果系统_关于最近折腾黑苹果的一些心得分享
- api存在csrf攻击吗_使用rest api防止单页应用上的csrf攻击
- VirtualBox Guest Additions
- Surface实现TF卡槽引导Ventoy加载Fydeos,不格式化硬盘,不重装Windows!
- 解析人工智能与人类智慧的求同存异
- Linux内核编译——Uboot
- python poisson图像融合制作CSDN博客头像
- 神经结构搜索资料NAS
- 虽败犹荣的McCain
- 电脑如何查看及开启虚拟化