Hive【内部表、外部表、临时表、分区表、分桶表】【总结】

目录

Hive的物种表结构特性

 一、内部表

建表

使用场景

 二、外部表

建表:关键词【EXTERNAL】

场景:

外部表与内部表可互相转换

 三、临时表

建表

 临时表横向对比​编辑

四、分区表

建表:关键字【PARTITIONED BY】

场景:

五、分桶表

背景

建表

 分区表和分桶表结合使用

Hive的物种表结构特性

  1. 内部表:当删除内部表时,HDFS上的数据以及元数据都会被删除;
  2. 外部表:当删除外部表时,HDFS上的数据不会被删除,但是元数据会被删除;
  3. 临时表:在当前会话期间存在,会话结束时自动消失;
  4. 分区表:将一批数据按照一定的字段或者关键字为多个目录进行存储;
  5. 分桶表:将一批数据按照指定好的字段和桶的数量,对指定字段的数据取模运算,分成不同的桶进行存储,方便随机取样以及join等操作。

 一、内部表

建表

--方式一:正式建表
CREATE TABLE `hdw_dim.dim_city_info_df`(city_id            STRING COMMENT  '城市id' ,city_name          STRING COMMENT  '城市名称' ,provice_id         STRING COMMENT  '省份id' ,provice_name       STRING COMMENT  '省份名称'
)
COMMENT '城市信息维表'
PARTITIONED BY ( `pdate`      STRING COMMENT  '天分区'
)
STORED AS orc
TBLPROPERTIES ('creator'='210XXXXX', 'orc.compress'='SNAPPY','ttl' = '30'
);
--方式二:仿照现有的表建表
create table hdw_dim.dim_city_info_tmp like hdw_dim.dim_city_info_df;
--方式三:根据查询结果自动创建表并且插入数据
create table dw_dim.dim_city_info_tmp1 as dw_dim.dim_city_info_tmp

使用场景

  1. ETL数据清理时用内部表做中间表,清理时HDFS上的文件同步删除;
  2. 在误删的情况下,数据易回溯,用内部表;
  3. 统计分析时,不涉及数据共享数据的情况;
  4. 需要对元数据和表数据进行管理时。

 二、外部表

建表:关键词【EXTERNAL】

CREATE EXTERNAL TABLE `hdw_dim.dim_city_info_df`(city_id            STRING COMMENT  '城市id' ,city_name          STRING COMMENT  '城市名称' ,provice_id         STRING COMMENT  '省份id' ,provice_name       STRING COMMENT  '省份名称'
)
COMMENT '城市信息维表'
PARTITIONED BY ( `pdate`      STRING COMMENT  '天分区'
)
STORED AS orc
TBLPROPERTIES ('creator'='210XXXXX', 'orc.compress'='SNAPPY','ttl' = '30'
);

场景:

  • 建议在ods层使用外部表
  1. 外部表不会加载数据到Hive的默认仓库,减少数据的传输,同时还能和其他外部表共享数据;
  2. 使用外部表,Hive不会修改源数据,不用担心数据损坏或者丢失;
  3. Hive在删除外部表时,删除的只是表结构,而不会删除数据;
  • 在对于恢复巫山数据有困难的情况,比如:实时采集的数据;

外部表与内部表可互相转换

--查看表类型
desc formatted address--将内部表修改为外部表
alter table address set tblproperties('EXTERNAL' = 'TRUE');--将外部表修改为内部表
alter table address set tblproperties('EXTERNAL' = 'FALSE');

 三、临时表

建表

--方式一:TEMPORARY
create temporary table `hdw_dim.dim_city_info`(city_id            STRING COMMENT  '城市id' ,city_name          STRING COMMENT  '城市名称' ,provice_id         STRING COMMENT  '省份id' ,provice_name       STRING COMMENT  '省份名称'
)
COMMENT '城市信息维表'
--方式二:with as
with t1 as 
(select *from hdw_dim.dim_city_infowhere provice_name = '山东省'
) ,
t2 as 
(select *from hdw_dim.dim_city_infowhere provice_name = '北京市'
)
--方式三:真实建表,用完手动删除
create table hdw_tmp.tmp_city_info as 
select * 
from hdw_dim.dim_city_info;
drop table if exists hdw_tmp.tmp_city_info

 临时表横向对比

四、分区表

分区是HDFS上表目录的子目录,数据按照分区存储在子目录中。如果查询的where子句中包含分区条件,则直接从该分区查找,而不是扫描整个目录,合理的分区可以极大的提高查询速度和性能。

建表:关键字【PARTITIONED BY】

CREATE EXTERNAL TABLE emp_partition
(    
empno INT,    
ename STRING,    
job STRING,    
mgr INT,    
hiredate TIMESTAMP,    
sal DECIMAL(7,2),    
comm DECIMAL(7,2)    
)    
PARTITIONED BY (deptno INT)   -- 按照部门编号进行分区    
ROW FORMAT DELIMITED FIELDS TERMINATED BY "\t"    
LOCATION '/hive/emp_partition';

场景:

在数据仓库管理大规模数据集的时候都需要进行分区,比如将日志文件按天进行分区,从而保证数据细粒度的划分,使得查询性能得到提升。

查看分区目录

hadoop fs -ls  hdfs://hadoop001:8020/hive/emp_partition/

五、分桶表

背景

分区提供了一个隔离数据和优化查询的可行性方案,但是并非所有的数据集都可以形成合理的分区,分区的数量也不是越多越好,过多的分区条件可能导致很多分区上没有数据。同时hive会限制动态分区可以创建最大的分区数,用来避免过多的文件对文件系统产生负担。

        鉴于以上原因,Hive还提供了一种更细粒度的数据拆分方案:分桶表(bucket Table)。分桶表会将指定的列的值进行哈希散列,并对bucket(桶数量)取余,然后存储到对应的bucket中。

建表

CREATE EXTERNAL TABLE emp_bucket
(    
empno INT,    
ename STRING,    
job STRING,    
mgr INT,    
hiredate TIMESTAMP,    
sal DECIMAL(7,2),    
comm DECIMAL(7,2),    
deptno INT
)    
CLUSTERED BY(empno) 
SORTED BY(empno ASC) INTO 4 BUCKETS  --按照员工编号散列到四个 bucket 中   
ROW FORMAT DELIMITED FIELDS TERMINATED BY "\t"    
LOCATION '/hive/emp_bucket';

 分区表和分桶表结合使用

分区表和分桶表的本质都是将数据按照不同粒度进行拆分,从而使得在查询的时候不必扫描全表,只需要扫描对应的分区或分桶,从而提升查询的效率。两者可以结合使用,从而保证数据在不同粒度上都能得到合理的拆分,官方示例如下:

CREATE TABLE page_view_bucketed
(    
viewTime INT,     
userid BIGINT,    
page_url STRING,     
referrer_url STRING,    
ip STRING 
) 
PARTITIONED BY(dt STRING) 
CLUSTERED BY(userid) 
SORTED BY(viewTime) INTO 32 BUCKETS ROW FORMAT DELIMITED   
FIELDS TERMINATED BY '\001'   
COLLECTION ITEMS TERMINATED BY '\002'   
MAP KEYS TERMINATED BY '\003' 
STORED AS SEQUENCEFILE;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/485224.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【vue vue-seamless-scroll】解决vue-seamless-scroll鼠标悬浮才滚动或者只滚动一次就失效的问题

解决问题:使用vue-seamless-scroll发现只有鼠标悬浮上去才滚动,而且滚动一次停止了 目标效果: 解决方案: 最后发现是因为数据需要在页面挂载好就赋值,否则页面在加载完成后,数据无法自动滚动。但因为数据…

opencv图像的本质

目的 OpenCV是一个跨平台的库,使用它我们可以开发实时的计算机视觉应用程序。 它主要集中在图像处理,视频采集和分析,包括人脸检测和物体检测等功能。 数字图像在计算机中是以矩阵形式存储的,矩阵中的每一个元素都描述一定的图像…

day09-分库分表专题-今日指数

分库分表专题 学习目标 1、理解分库分表基础概念【垂直分库分表、水平分库分表】 2、能够说出sharding-jdbc为我们解决什么问题 3、理解sharding-jdbc中的关键名词 4、理解sharding-jdbc的整体架构及原理 5、掌握sharding-jdbc集成SpringBoot的方式 第一章 分库分表介绍 1、…

uniapp微信小程序解决上方刘海屏遮挡

问题 在有刘海屏的手机上,我们的文字和按钮等可能会被遮挡 应该避免这种情况 解决 const SYSTEM_INFO uni.getSystemInfoSync();export const getStatusBarHeight ()> SYSTEM_INFO.statusBarHeight || 15;export const getTitleBarHeight ()>{if(uni.get…

node 之 初步认识

思考:为什么JavaScript可以在浏览器中被执行 代执行的js代码——JavaScript解析引擎 不同的浏览器使用不同的JavaScript解析引擎 Chrome 浏览器 》 V8 Firefox浏览器 》OdinMonkey(奥丁猴) Safri浏览器 》JSCore IE浏览器 》Chakra(查克拉) e…

H5移动端文件预览pdf

H5移动端文件预览pdf 需求:H5页面嵌入浙政钉,需要文件预览Pdf。 试用了多个插件,踩了很多坑,如果小伙伴有类似填坑经历,并成功解决,感谢留言指点!!! 先讲最终方案&#x…

qt 软件发布(Windows)

1. 开发环境 QtCreator MSVC编译器 2. 源码编译 生成release或者debug版本的exe可执行文件(x64或x86) 3. windeployqt 打包 ①左下角开始菜单栏找到QT的命令交互对话框,如下图MSVC 2017 64-bit(根据第二步编译的类型选择64位或者32位)。 ②cd 切换到第二步可…

性能测试的几个指标范围(CPU,内存,IO,网络)

性能测试中,对服务端的指标监控也是很重要的一个环节。通过对各项服务器性能指标的监控分析,可以定位到性能瓶颈。 后端性能指标有 CPU,内存,网络,jvm,I/O 等等 分析思路 整体系统 CPU 利用率 内存利用…

Flutter GLSL - 肆 | 从条纹到马赛克

theme: cyanosis Flutter & GLSL 系列文章: 《Flutter & GLSL - 壹 | Shader 让绘制无限强大》《Flutter & GLSL - 贰 | 从坐标到颜色》《Flutter & GLSL - 叁 | 变量传参》《Flutter & GLSL - 肆 | 从条纹到马赛克》 案例代码开源地址 【skele…

【高德地图】Android搭建3D高德地图详细教

📖Android搭建3D高德地图详细教程 📖第1章 高德地图介绍✅了解高德地图✅2D地图与3D地图 📖第2章 搭建3D地图并显示✅第 1 步:创建 Android 项目✅第 2 步:获取高德Key✅第 3 步:下载地图SDK✅第 4 步&…

数据可视化在商业领域有哪些重要性?

数据可视化在商业领域的重要性体现在多个方面,它通过将复杂的数据集转化为直观、易于理解的图形和图表,帮助企业和组织做出更明智的决策。以下是数据可视化对商业的一些关键重要性: 提高决策效率:通过直观的图表和图形&#xff0c…

音视频技术-声反馈啸叫的产生与消除

目录 1.均衡调节: 2.移频法: 3.移相法: 4.比较法: 在扩音系统中,产生啸叫危害很大,一方面影响会议、演出等活动的正常进行,另一方面严重的啸叫会导致音响设备的损坏。 “啸叫”是“声反馈”的俗称,形成的机制复杂,消除的手段多样,专业调音师也对