【大数据离线开发】8.3 Hive的数据模型

news2025/7/7 5:01:43

8.4 Hive的数据模型

Hive的数据存储

  • 基于HDFS
  • 没有专门的数据存储格式
  • 存储结构主要包括:数据库、文件、表、视图
  • 可以直接加载文本文件(.txt文件)
  • 创建表时,指定Hive数据的列分隔符与行分隔符

8.4.1 内部表

  • hive 的内部表类似 MySQL、Oracle中的表
  • 每一个 Table 在 Hive 中都有一个相应的目录存储数据
  • 所有的 Table 数据(不包括 External Table)都保存在这个目录中
  • 删除表时,元数据与数据都会被删除

hive 默认表的分隔符是 tab 键

举例:创建一个员工表emp表

HDFS上查询到员工表数据:hdfs dfs -cat /scott/emp.csv

数据 7654,MARTIN,SALESMAN,7698,1981/9/28,1250,1400,30

启动hive,执行下述语句,上述表保存到数据库里,hdfs目录(游览器ip:50070)上也有保存表

create table emp(
	empno int,
	ename string,
	job string,
	mgr int,
    hiredate string,
    sal int,
    comm int,
    deptno int
);

导入数据

  • insert语句

  • load语句:相当于crtl+x

    1. 导入HDFS的语句:load data inpath ‘/scott/emp.csv’ into table emp;
    2. 直接导入本地Linux数据:load data local inpath ‘/root/tmp/emp.csv’ into table emp1;

在这里插入图片描述

在这里插入图片描述

默认表的分隔符是tab键,重新创建emp1表,格式化表的分隔符为逗号

在这里插入图片描述

在这里插入图片描述

客户端的静默模式:hive -S

执行的sql如果是一个MapReduce的话,sql语句就会在yarn后台运行,然后打印在屏幕上

在这里插入图片描述

在这里插入图片描述

8.4.2 分区表

  • Partition 对应于数据库的 Partition 列的密集索引
  • 在 Hive 中,表中的一个 Partition 对应于表下的一个目录,所有的 Partition 的数据都存储在对应的目录中

分区表:提高性能
在这里插入图片描述

举例:创建一个分区表,根据部门号deptno

create table emp_part(
	empno int,
	ename string,
	job string,
	mgr int,
    hiredate string,
    sal int,
    comm int,
)partitioned by (deptno int)
row format delimited fileds terminated by ',';

插入数据:往分区中插入数据,子查询

insert into table emp_part partition(deptno=10) selecet empno,ename,job,mgr,hiredate,sal,comm from emp1 where deptno = 10;
insert into table emp_part partition(deptno=20) selecet empno,ename,job,mgr,hiredate,sal,comm from emp1 where deptno = 20;
insert into table emp_part partition(deptno=30) selecet empno,ename,job,mgr,hiredate,sal,comm from emp1 where deptno = 30;

在这里插入图片描述

补充:如何判断提高了性能——SQL执行计划

  • 关系型数据库(Oracle)
  • Hive类型方式

Oracle 中的 SQL 的执行计划

  • oracle数据库的优化器

    1. RBO:基于规则的优化器
    2. CBO:基本上都是CBO,基于成本(cost)的优化器
  • oracle中的索引的类型

    1. B树索引:默认
    2. 位图索巧

案例:查询10号部门的员工

情况一:

生成执行计划:explain plan for select * from emp where deptno=10;

打印执行计划:select * from table(dbms xplan.display);

情况二:

创建索引:create index myindex on emp(deptno);

打印执行计划:select * from table(dbms xplan.display);

在这里插入图片描述

结论:情况一的 cost(成本)比情况二的 cost 高

HIve 中的 SQL 的执行计划

案例:查询10号部门的员工

情况一:

生成执行计划:explain select * from emp1 where deptno=10;

情况二:

生成执行计划:explain select * from emp_part where deptno=10;

在这里插入图片描述

8.4.3 外部表

外部表:只定义表结构,数据保存在HDFS的某个目录下

  • 指向已经在 HDFS 中存在的数据,可以创建 Partition
  • 它和内部表在元数据的组织上是相同的,而实际数据的存储则有较大的差异
  • 外部表 只有一个过程,加载数据和创建表同时完成,并不会移动到数据仓库目录中,只是与外部数据建立一个链接。当删除一个外部表时,仅删除该链接

在这里插入图片描述

案例:创建外部表指定hdfs的student目录

create external table ext_student
(sid int,sname string,age int)
row format delimited fields terminated by ','
location '/students' ;

在这里插入图片描述

8.4.4 桶表

桶表:类似Hash。桶表是对数据进行哈希取值,然后放到不同文件中存储。

案例:根据员工的职位job简历桶表

创建桶表
create table emp_bucket(
	empno int,
	ename string,
	job string,
	mgr int,
    hiredate string,
    sal int,
    comm int,
    deptno int
)clustered by (job) into 4 buckets
row format delimited fileds terminated by ',';

设置设置环境变量
set hive.enforce.bucketing = true;

插入数据
insert into table emp_bucket select * from emp1;

在这里插入图片描述

插入语句速度比较慢,可以在网页版查看进度

当执行完成之后,可以在yarn:50070网页查看桶表信息,也可以用hdfs以命令行的方式进行查看

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

8.4.5 视图

  • 视图是一种虚表(不保存数据),是一个逻辑概念;可以跨越多张表
  • 视图建立在已有表的基础上, 视图赖以建立的这些表称为基表
  • 视图的作用:可以简化复杂的查询
创建视图
create view view10
as select * from emp1 where deptno=10;

查询视图
select * from view10;

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

hexo静态网站部署到腾讯云cos

hexo支持很多部署方案,最直接的就是部署在GitHub Pages服务上,国内gitee、coding等代码托管平台也都支持静态网站服务,而且免费。 但是GitHub在国内访问不太稳定,国内的代码托管平台资源和服务也不太稳定,后来想了想&…

windows安装tomcat

这里写自定义目录标题tomcat官网下载安装包并解压环境变量配置启动tomcat访问http://localhost:8080/修复启动出现乱码问题tomcat官网下载安装包并解压 环境变量配置 系统环境变量新增: 变量名:CATALINA_HOME 变量值:tomcat的安装目录 编辑…

使用MAT进行内存分析,并找到OOM问题

前言 在处理一次现场问题时,发现服务还在运行,但是出现假死情况,后通过分析GC日志以及使用MAT分析确定问题是内存溢出OutOfMemery(OOM);这里只记录MAT分析学习过程,最近工作忙,补记录。 GC日志分析 首先,如…

EM@三角函数诱导公式

文章目录诱导公式单位圆坐标和三角函数记忆口诀符号看象限奇变偶不变例常用诱导公式🎈常用部分(5对)倒数关系六种三角函数间的转换关系小结ReflectionsShifts and periodicity诱导公式 诱导公式 - 维基百科,自由的百科全书 (wikipedia.org) 单位圆坐标…

推送投票制作微信推送里投票制作教程在线投票活动制作

近些年来,第三方的微信投票制作平台如雨后春笋般络绎不绝。随着手机的互联网的发展及微信开放平台各项基于手机能力的开放,更多人选择微信投票小程序平台,因为它有非常大的优势。1.它比起微信公众号自带的投票系统、传统的H5投票系统有可以图…

一文看懂网上下单的手机流量卡为什么归属都是随机的!

最近很多网上下单的小伙伴们心中似乎都有一个疑问。那就是网上很多手机卡、流量卡都不能自选号码和归属地,就算能自选号码,归属地也是随机的而且很多都不会跟你说具体的城市,这是为什么呢?莫非其中有什么不可告人的秘密吗?小伙伴…

JetBrains IntelliJ支持自动切换输入法,写代码如丝般顺滑

背景简介对于母语为中文的开发者,写代码过程中经常需要在中/英输入法之间进行切换,而且由于不清楚当前处于哪种输入状态,有时输入到一半发现输入法错了,删除重新输入,有时切换了好几次都没有成功,实在太影响…

【强化学习】强化学习数学基础:蒙特卡洛方法

强化学习数学方法:蒙特卡洛方法举个例子举个例子1:投掷硬币The simplest MC-based RL algorithm举个例子2:Episode lengthUse data more efficientlyMC without exploring starts总结内容来源将value iteration和policy iteration方法称为mod…

无线耳机哪个品牌好一点?2023四款好用的无线耳机排行

随着蓝牙耳机的普及,越来越多的耳机厂商加入蓝牙耳机这条竞争赛道。不同品牌的蓝牙耳机又有着不同的价位区间,不同的性能配置,不同的外观设计,可以说现在的蓝牙耳机多到让人在选择时眼花缭乱。那么,无线耳机哪个品牌好…

云端需求助力跑赢周期,金山办公有望借助ChatGPT加速腾飞

与微软在办公领域“搏杀”了三十年的金山办公,或许正在迎来自己的“第二春”。2月25日,金山办公(688111)发布2022年度业绩快报,全年营收38.85亿元人民币(单位下同),同比增加18.44%&a…

智慧工厂数字孪生可视化监测系统有效提升厂区安全管控效力

我国制造业正处于产业升级的关键时期,基于数据进行生产策略制定与管理是大势所趋,而数据可视化以更直观的方式成为数据分析传递信息的重要工具。 深圳华锐视点通过三维可视化手段对工厂各类设备进行三维建模,真实复现设备设施外观、结构、运转…

基于卷积神经网络CNN的分类研究,基于卷积神经网络的手写体识别

目录 背影 卷积神经网络CNN的原理 卷积神经网络CNN的定义 卷积神经网络CNN的神经元 卷积神经网络CNN的激活函数 卷积神经网络CNN的传递函数 卷积神经网络CNN手写体识别 基本结构 主要参数 MATALB代码 结果图 展望 背影 现在生活,各种人工智能都要求对图像拥有识别…

Linux内核4.14版本——drm框架分析(1)——drm简介

目录 1. DRM简介(Direct Rendering Manager) 1.1 DRM发展历史 1.2 DRM架构对比FB架构优势 1.3 DRM图形显示框架 1.4 DRM图形显示框架涉及元素 1.4.1 DRM Framebuffer 1.4.2 CRTC 1.4.3 Encoder 1.4.4 Connector 1.4.5 Bridge 1.4.6 Panel 1.4.…

双指针法将时间复杂度从 O(n^2) 优化到 O(n)

[1] 什么是双指针法 双指针法(Two Pointers)是一种常见的算法技巧,常用于数组和链表等数据结构中。 双指针法的基本思想是维护两个指针,分别指向不同的位置,通过它们的移动来解决问题。在某些情况下,使用双…

【Leetcode】移除链表元素 链表的中间节点 链表中倒数第k个节点

目录 一.【Leetcode203】移除链表元素 1.链接 2.题目再现 A.双指针法 B.类尾删法 C.哨兵位 二.【Leetcode876】链表的中间节点 1.链接:链表的中间节点 2.题目再现 3.解法:快慢指针 三.链表中倒数第k个节点 1.链接:链表中倒数第k个…

LiveGBS国标GB/T28181国标视频流媒体平台-功能报警订阅配置报警预案告警截图及录像

LiveGBS国标GB/T28181国标视频流媒体平台-功能报警订阅配置报警预案告警截图及录像1、报警信息1.1、报警查询1.2、配置开启报警订阅1.2.1、国标设备编辑1.2.2、选择开启报警订阅1.3、配置摄像头报警1.3.1、配置摄像头报警通道ID1.3.2、配置摄像头开启侦测1.3.3、尝试触发摄像头…

企业为什么需要做APP安全评估?

近几年新型信息基础设施建设和移动互联网技术的不断发展,移动APP数量也呈现爆发式增长,进而APP自身的“脆弱性”也日益彰显,这对移动用户的个人信息及财产安全带来巨大威胁和挑战。在此背景下,国家出台了多部法律法规,…

【架构师】跟我一起学架构——微服务分层监控

博客昵称:架构师Cool 最喜欢的座右铭:一以贯之的努力,不得懈怠的人生。 作者简介:一名Coder,软件设计师/鸿蒙高级工程师认证,在备战高级架构师/系统分析师,欢迎关注小弟! 博主小留言…

机器学习与目标检测作业:安装pytorch

机器学习与目标检测作业:安装pytorch一、 进入官网复制下载命令二、 下载的过程2.1 conda命令运行三、 测试pytorch是否安装成功安装pytorch教程 一、 进入官网复制下载命令 进入官网复制下载命令如下图所示 二、 下载的过程 下载的过程如下图所示 2.1 conda命令运…

vue3中引入初始化样式

1、创建一个reset.css文件 2、文件内容为: css charset “utf-8”;html{background-color:#fff;color:#000;font-size:12px} body,ul,ol,dl,dd,h1,h2,h3,h4,h5,h6,figure,form,fieldset,legend,input,textarea,button,p,blockquote,th,td,pre,xmp{margin:0;padding…