Hive的常规操作
Hive常规操作
hive常用交互命令
-e执行sql语句
[root@master ~]# hive -e "show databases";
-f执行sql脚本
[root@master ~]# hive -f /usr/local/demo.sql
查看hive中输入的所有命令
[root@master ~]# cat ~/.hivehistory
操作库
创建库
语法:
create dtabase 库名称;
案例:
hive> create database demo;
查看库
查看所有数据库
hive> show databases;
查看数据库信息
语法:
desc database 库名称;
案例:
hive> desc database demo;
查看数据库详细信息
语法:
desc database extended 库名称
案例:
hive> desc database extended demo;
使用库
语法:
use 库名称;
案例:
hive> use demo;
修改库
语法:
alter database 库名称 set dbproperties( )
使用alter database命令为某个数据库的dbproperties设置键-值对属性值,用于描述数据库的属性信息,数据库的其他数据信息无法更改,包括数据库所在目录地址
案例:
hive> alter database demo set dbproperties('createtime'='20220620');
删除库
删除空数据库
语法:
drop database 库名称;
案例:
hive> drop database demo;
删除存在的数据库
语法:
drop databse if exists 库名称
案例:
hive> drop database if exists demo;
删除不为空的数据库
语法:
drop database 库名称 cascade;
案例:
hive> drop database demo cascade;
操作表
创建表
语法:
create [external] table [if not exists] table_name
(col_name data_type [comment col_commment],....)
[commetn table_comment]
[partitioned by (col_name data_type [comment col_commnet,]...)]
[cloustered by (col_name,col_name)]
[sorted by (col_name [asc|desc],....)into num_buckets buckets]
[stored as fire_format]
[location hdfs_path]
[like]
- create table :
- 创建一个指定名称的表,如果相同名称的表存在,则抛出异常,用于可以使用
if not exists
选项忽略这个异常
- 创建一个指定名称的表,如果相同名称的表存在,则抛出异常,用于可以使用
- external:
- 关键字创建一个外部表,在建表的同时指定一个指向实际数据的路径location,hive创建内部表时,会将数据移动到数据仓库指向的路径;如果创建外部表,仅记录数据所在的路径,不会对数据的位置做任何改变,在删除表时,内部表的元数据和数据会被一起删除,而外部表只删除元数据,不删除数据
- commnet:
- 为表和列添加注释
- partitioned by
- 创建分区表
- cloustered by
- 创建分桶表
- sorted by
- 桶内排序
- stored as
- 指定存储文件类型,常见的类型有二进制文件(sequencefile),文本(textfile),列式存储格式文件(rcfile),如果文本数据是纯文本,可以使用stored as textfile。如果需要压缩存储,可以使用stored as sequencefile。
- location
- 指定表在hdfs上的存储位置
- like
- 允许用户复制现有的表结构,但不是复制数据
基本数据类型
数据类型 | 描述 |
---|---|
BOOLEAN | 逻辑布尔值(TRUE/FALSE) |
TINYINT | 一个字节有符号整数,范围为-128到127 |
SMALLINT | 两个字节有符号整数,范围为-32768到32767 |
INT | 四个字节有符号整数,范围为-2147483648到2147483647 |
BIGINT | 八个字节有符号整数,范围为-9223372036854775808到9223372036854775807 |
FLOAT | 单精度浮点数,范围为-3.4028235E38到3.4028235E38 |
DOUBLE | 双精度浮点数,范围为-1.7976931348623157E308到1.7976931348623157E308 |
STRING | 字符串类型 |
VARCHAR | 可变长度字符串类型 |
CHAR | 定长字符串类型 |
DATE | 日期类型,格式为YYYY-MM-DD |
TIMESTAMP | 时间戳类型,以秒为单位存储时间戳 |
BINARY | 二进制数据类型 |
ARRAY | 数组类型,用于存储一组相同类型的元素 |
MAP | 映射类型,用于存储键值对 |
STRUCT | 结构体类型,用于存储不同类型的字段组成的记录 |
UNIONTYPE | 联合类型,用于表示多个可能的数据类型 |
创建普通表
hive (demo)> create table if not exists student(> id int,> name varchar(20)> calss string> );
VARCHAR
和STRING
都是用来表示字符串类型的数据。
-
VARCHAR
是可变长度字符串类型, -
STRING
是固定长度字符串类型。
创建分区表
hive (demo)> create table if not exists demo_tab_01(colume01 string)> partitioned by (colume02 string)> row format delimited> fields terminated by '\t';
create table if not exists demo_tab_01(column01 string)
: 创建了一个名为demo_tab_01
的表,其中包含一个名为column01
的列,数据类型为STRING
。IF NOT EXISTS
语句用于确保在表不存在时才创建该表,避免了重复创建表的情况。partitioned by (column02 string)
: 指定了表的分区方式。它表示根据名为column02
的列进行分区,该列的数据类型为STRING
。分区可以帮助提高查询性能,并且可以更有效地管理数据。row format delimited
: 指定了数据的行格式为分隔符格式。这意味着Hive将使用特定的分隔符来识别和分隔每行中的字段数据。fields terminated by '\t'
: 指定了字段之间的分隔符。在这种情况下,字段之间的分隔符是制表符\t
,表示字段之间使用制表符进行分隔。
创建外部表
hive (demo)> create external table if not exists demo_tab_02(id int,name string)> row format delimited fields terminated by '\t';
create external table if not exists demo_tab_02(id int, name string)
: 创建了一个名为demo_tab_02
的外部表,其中包含两列,分别是id
和name
,分别的数据类型分别是整数类型和字符串类型。row format delimited fields terminated by '\t'
: 指定了数据的行格式为分隔符格式,字段之间的分隔符是制表符\t
。这意味着Hive将使用制表符来识别和分隔每行中的字段数据。
删除数据表
语法:
drop table 表名称;
案例:
hive (demo)> drop table student;
修改表
修改内部表为外部表
语法:
alter table 表名称 set tblproperties('external'='true/false')
使用SET TBLPROPERTIES
子句来设置表的属性,将其标记为外部表。
external
是一个特殊的表属性,用于指示表是否为外部表
案例:
hive (demo)> alter table demo_tab_01 set tblproperties('external'='true');
修改外部表为内部表
语法:
alter table 表名称 set tblproperties('external'='true/false')
案例:
hive (demo)> alter table demo_tab_01 set tblproperties('exterual'='false');
重命名表
语法:
alter table 旧表名称 rename to 新名称;
案例:
hive (demo)> alter table demo_tab_01 rename to demo_new_01;
添加字段信息
语法:
alter table 表名称 add columns(字段 数据类型);
案例:
hive (demo)> alter table demo_tab_02 add columns(age int);
修改字段信息
语法:
alter table 表名称 change column 旧字段 新字段 数据类型;
案例:
hive (demo)> alter table demo_tab_02 change column id new_id string;
替换列
语法:
alter table 表名称 replace columns(字段 数据类型);
案例:
不会修改存储在hdfs中的数据,只是修改元数据的列而已。如果hdfs存储的是string,如果列replace列为int,则查不到对于的数据。
hive (demo)> alter table demo_tab_02 replace columns(age int);
删除表
删除表
语法:
drop table 表名称;
案例:
hive (demo)> drop table demo_new_01;
清空表
语法:
truncate table 表名称;
案例:
只能清空管理表,不能清除外部表
hive (demo)> truncate table demo_new_01;
分区表
概念
分表实际上是对于一个HDFS文件系统上的独立文件,该文件夹是该分区所有的数据文件。hive中的分区就是分目录,把一个大的数据集切割成多个小的数据集,在查询是可以通过where选定指定的分区查询对应的数据
操作
创建分区表
hive (demo)> create table if not exists demo_tab_01(colume01 string)> partitioned by (colume02 string)> row format delimited> fields terminated by '\t';
查看分区信息
hive (demo)> show partitions demo_tab_01;
查看分区表结构
hive (demo)> desc formatted demo_tab_01;
查看分区数据
hive (demo)> select * from demo_tab_01;
hive (demo)> select * from demo_tab_01 where colume01 = 1;
增加单个分区
hive (demo)> alter table demo_tab_01 add partition (colume01 = 'yyyy');
添加多个分区
hive (demo)> alter table demo_tab_01 add partition (colume01 = 'yyyy') partition (colume01 = 'xxxx') partition (colume01 = 'nnnn');
删除单个分区
hive (demo)> alter table demo_tab_01 drop partition (colume01 = 'yyyy');
删除多个分区
hive (demo)>alter table demo_tab_01 drop partition (colume01 = 'yyyy') partition (colume01 = 'xxxx') partition (colume01 = 'nnnn');
操作数据
通过insert语句向表中插入数据
insert into table 表名称 [partition] values(数据)
案例
hive (demo)> insert into table student1 values (1,'zhangsan','hadoop');
WARNING: Hive-on-MR is deprecated in Hive 2 and may not be available in the future versions. Consider using a different execution engine (i.e. spark, tez) or using Hive 1.X releases.
Query ID = root_20240604084248_e1532893-2e9d-407f-8490-fcd1c11e3cda
Total jobs = 3
Launching Job 1 out of 3
Number of reduce tasks is set to 0 since there's no reduce operator
Starting Job = job_1717461478463_0001, Tracking URL = http://master:8088/proxy/application_1717461478463_0001/
Kill Command = /usr/local/hadoop-3.3.1/bin/hadoop job -kill job_1717461478463_0001
Hadoop job information for Stage-1: number of mappers: 1; number of reducers: 0
2024-06-04 08:43:05,784 Stage-1 map = 0%, reduce = 0%
2024-06-04 08:43:16,233 Stage-1 map = 100%, reduce = 0%, Cumulative CPU 1.82 sec
MapReduce Total cumulative CPU time: 1 seconds 820 msec
Ended Job = job_1717461478463_0001
Stage-4 is selected by condition resolver.
Stage-3 is filtered out by condition resolver.
Stage-5 is filtered out by condition resolver.
Moving data to directory hdfs://master:8020/user/hive/warehouse/demo1.db/student1/.hive-staging_hive_2024-06-04_08-42-48_863_8941965166612581309-1/-ext-10000
Loading data to table demo1.student1
MapReduce Jobs Launched:
Stage-Stage-1: Map: 1 Cumulative CPU: 1.82 sec HDFS Read: 4634 HDFS Write: 88 SUCCESS
Total MapReduce CPU Time Spent: 1 seconds 820 msec
OK
_col0 _col1 _col2
Time taken: 29.486 seconds
分析执行日志
警告信息:
WARNING: Hive-on-MR is deprecated in Hive 2 and may not be available in the future versions. Consider using a different execution engine (i.e. spark, tez) or using Hive 1.X releases.
这是一个警告信息,提醒用户Hive-on-MR(Hive on MapReduce)在Hive 2中已经被弃用,并可能在将来的版本中不再可用。建议使用不同的执行引擎(例如Spark、Tez)或者使用Hive 1.X版本。
查询信息:
Query ID = root_20240604084248_e1532893-2e9d-407f-8490-fcd1c11e3cda
Total jobs = 3
这是查询的ID以及该查询涉及的总作业数量。
启动作业:
Launching Job 1 out of 3
此时开始启动作业,这是三个作业中的第一个。
作业进度信息:
Number of reduce tasks is set to 0 since there's no reduce operator
Starting Job = job_1717461478463_0001, Tracking URL = http://master:8088/proxy/application_1717461478463_0001/
由于没有Reduce操作,所以减少任务的数量设置为0。然后开始作业,并提供作业的跟踪URL。
作业运行信息:
Hadoop job information for Stage-1: number of mappers: 1; number of reducers: 0
这是作业运行的信息,第一个阶段(Stage-1)有一个Mapper任务,没有Reducer任务。
作业执行进度:
2024-06-04 08:43:05,784 Stage-1 map = 0%, reduce = 0%
2024-06-04 08:43:16,233 Stage-1 map = 100%, reduce = 0%, Cumulative CPU 1.82 sec
提供了作业的执行进度,显示了Mapper任务的完成情况。
作业结束信息:
Ended Job = job_1717461478463_0001
作业执行结束。
数据移动和加载信息:
Moving data to directory hdfs://master:8020/user/hive/warehouse/demo1.db/student1/.hive-staging_hive_2024-06-04_08-42-48_863_8941965166612581309-1/-ext-10000
Loading data to table demo1.student1
数据正在被移动到HDFS(Hadoop分布式文件系统)的特定目录,并加载到名为demo1.student1
的Hive表中。HDFS通常使用8020端口进行通信,所以hdfs://master:8020/
表示数据将被写入到HDFS的master节点,并通过8020端口进行通信
MapReduce任务启动信息:
MapReduce Jobs Launched:
Stage-Stage-1: Map: 1 Cumulative CPU: 1.82 sec HDFS Read: 4634 HDFS Write: 88 SUCCESS
Total MapReduce CPU Time Spent: 1 seconds 820 msec
显示了启动的MapReduce任务的情况,包括Mapper的数量、累计CPU时间以及HDFS读写情况。
查询结果:
OK
_col0 _col1 _col2
Time taken: 29.486 seconds
插入操作的结果,包括表的字段以及操作所花费的时间。
可以看到刚刚的插入语句使用slave02节点执行的
向表中导入数据
load data [local] inpath '路径' [overwirte] into table 表名称 [partition](partcol1=value1.....)]
- load data:
- 表示加载数据
- local:
- 表示从本地中加载数据到hive表;否则从hdfs中加载数据到hive表
- inpath:
- 表示数据的路径
- overwirte:
- 表示覆盖表中已有的数据,负责表示追加数据
- into table:
- 表示加载到哪张表
- 表名称:
- 表示具体操作的哪张表
- partition:
- 表示上传到指定的分区中
相关文章:

Hive的常规操作
Hive常规操作 hive常用交互命令 -e执行sql语句 [rootmaster ~]# hive -e "show databases";-f执行sql脚本 [rootmaster ~]# hive -f /usr/local/demo.sql查看hive中输入的所有命令 [rootmaster ~]# cat ~/.hivehistory操作库 创建库 语法: create…...
redis做为缓存,mysql的数据如何与redis进行同步呢?
让我们一步步来实现如何让MySQL数据库的数据和Redis缓存保持同步。想象一下,MySQL是一个大仓库,存放着所有重要的货物(数据),而Redis则像是一个快速取货窗口,让你能更快拿到常用的东西。为了让两者保持一致…...
【Map】集合总结
一、Map 之前学习的Collection集合体系是单列集合,即一次存取一个元素 Map是双列集合,一次存取一对元素,这一对儿称为键值对,key-value,且key是映射到value 所谓键映射到值,是指只能通过键找到值,无法通过值找键 Map中键不能重复!值允许重复 Map中一个键,只能对应一个值 Ma…...

SpringBoot实现发送邮件功能
目录 一、开启邮件服务 二、导入pom依赖 三、配置yml文件 四、发送邮件 4.1、发送文字邮件 4.2、发送html邮件 4.3、发送附件邮件 4.4、发送图片邮件 一、开启邮件服务 这里拿QQ邮箱举例。 翻到下面进行开启,之后获取授权码。 二、导入pom依赖 <dependency><…...

外观数列 ---- 模拟
题目链接 题目: 分析: 题目的意思如下:所以我们需要引用双指针来找到连续的字符有几个, 并添加到答案中, 接着将此字符添加到答案中, 让left right , 继续向后遍历整个字符串, 重复上面的操作将答案重新赋给字符串, 继续重复上述操作, 应该重复n - 1 次, 因为n为1的时候, 直…...

上心师傅的思路分享(二)
Druid monitor 与Springboot常见报错界面渗透小技巧 目录 前言 1.Druid monitor介绍 2.Druid未授权(1rank) 3.druid弱口令 4.Druid进一步利用 4.1 URL监控 4.2 Session监控 利用思路 EditThisCookie(小饼干插件) 5.SpringBoot Actuator未授权访问漏洞 5.1 简介 5…...

116页 | 2024年中国金融行业网络安全研究报告(免费下载)
以上是资料简介和目录,如需下载,请前往星球获取!!!...

基于fabric封装一个简单的图片编辑器(vue 篇)
介绍 前言vue demo版本react 版本 前言 对 fabric.js 进行二次封装,实现图片编辑器的核心功能。核心代码 不依赖 ui响应式框架vue ,react 都适用。 只写了核心编辑相关代码便于大家后续白嫖二次开发 核心代码我就没有打包发布 会 和 业务代码一起放到项目中。 vu…...
Linux中 .PHONY 和 all 在 Makefile 中的作用
1 .PHONY 和 all .PHONY 是 GNU make 工具中的一个特殊指令,用于指示某个目标是一个伪目标。伪目标并不对应于实际的文件,而是用来执行一系列命令的标识符。使用 .PHONY 的好处包括避免与现有文件同名造成的冲突,以及提高 make 的执行效率&am…...
Flutter 中的 FlexibleSpaceBar 小部件:全面指南
Flutter 中的 FlexibleSpaceBar 小部件:全面指南 Flutter 是一个由 Google 开发的跨平台 UI 框架,它提供了丰富的组件来帮助开发者构建高性能、美观的移动、Web 和桌面应用。在 Flutter 的组件库中,FlexibleSpaceBar 是一个与 SliverAppBar …...
每天一个数据分析题(三百五十四)-分析报表
分析报表的主要作用是通过可视化图表的形式将各种分析结果完整、准确地呈现给阅读者,帮助阅读者读懂数据,从而进一步发现数据背后隐藏的业务问题。下列说法正确的是? A. 静态报表的主要载体是电子表格工具 B. BI报表的数据源获取方式是应用…...

卫星通信频段有哪些
卫星通信使用到的频段涵盖L, S, C, Ku, Ka等,而最常用的频段是C(4~8GHz)和Ku(12~18GHz)频段,而Ka(27-40GHz)频段是后起之秀。目前地球赤道上空有限的地球同步卫星轨位几乎已被各国占满,C和Ku频段内的频率资源被大量使用,而Ka频段的…...
RobotMaster编程语言:深度探索与实践挑战
RobotMaster编程语言:深度探索与实践挑战 RobotMaster编程语言,作为机器人编程领域的一颗璀璨明珠,其独特性与复杂性吸引了无数探索者的目光。本文将从四个方面、五个方面、六个方面和七个方面深入剖析这一编程语言的奥秘,同时揭…...
Ascend训练软件栈了解
一.分布式大模型训练的完整流程及注意事项 1. 迁移分析 模型选取与约束说明 : 确保模型能在GPU或CPU上运行并获取性能基线,了解不支持场景,如DP模式、APEX库、bmtrain框架等。支持度分析 : 使用msFmkTransplt工具分析模型算子、…...

官网万词霸屏推广 轻松实现百度万词霸屏源码系统 带完整的安装代码包以及搭建教程
系统概述 官网万词霸屏推广源码系统是一款基于先进技术研发的综合性 SEO 工具。它的设计理念是通过智能化的算法和策略,帮助用户快速提升网站在百度等搜索引擎中的排名,实现大量关键词的霸屏效果。该系统整合了多种优化技术,包括关键词研究、…...

Linux 36.3 + JetPack v6.0@jetson-inference之图像分类
Linux 36.3 JetPack v6.0jetson-inference之图像分类 1. 源由2. imagenet2.1 命令选项2.2 下载模型2.3 操作示例2.3.1 单张照片2.3.2 视频 3. 代码3.1 Python3.2 C 4. 参考资料5. 补充5.1 第一次运行模型本地适应初始化5.2 samba软连接 1. 源由 从应用角度来说,图…...

重庆公司记账代理,打造专业财务管理解决方案的领先企业
重庆公司记账代理,作为专业的财务管理服务提供商,我们的目标是为公司的经营管理和决策提供科学、准确的财务数据支持,我们通过长期的专业经验和对市场的深入理解,为您提供一站式的记账服务和财务咨询。 专业团队 我们拥有一支由经…...

transformers 阅读:Llama 模型
正文 学习一下 transformers 库中,Llama 模型的代码,学习过程中写下这篇笔记,一来加深印象,二来可以多次回顾。 笔者小白,里面错误之处请不吝指出。 层归一化 LlamaRMSNorm transformers 中对于 LlamaRMSNorm 类的…...

python绘制piper三线图
piper三线图 Piper三线图是一种常用于水化学分析的图表,它能够帮助我们理解和比较水样的化学成分。该图表由三个部分组成:两个三角形和一个菱形。两个三角形分别用于显示阳离子和阴离子的相对比例,而菱形部分则综合显示了这些离子比例在水样…...

咖啡机器人如何精准控制液位流量
在如今快节奏的生活中,精确控制液位流量的需求愈发迫切,特别是在咖啡机器人等精密设备中。为了满足这一需求,工程师们不断研发出各种先进的技术,以确保液体流量的精准控制。其中,霍尔式流量计和光电式流量计就是两种常…...

Appium+python自动化(十六)- ADB命令
简介 Android 调试桥(adb)是多种用途的工具,该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试…...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)
服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...
linux 错误码总结
1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...

React19源码系列之 事件插件系统
事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...

屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!
5月28日,中天合创屋面分布式光伏发电项目顺利并网发电,该项目位于内蒙古自治区鄂尔多斯市乌审旗,项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站,总装机容量为9.96MWp。 项目投运后,每年可节约标煤3670…...
Qt Http Server模块功能及架构
Qt Http Server 是 Qt 6.0 中引入的一个新模块,它提供了一个轻量级的 HTTP 服务器实现,主要用于构建基于 HTTP 的应用程序和服务。 功能介绍: 主要功能 HTTP服务器功能: 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...

微信小程序云开发平台MySQL的连接方式
注:微信小程序云开发平台指的是腾讯云开发 先给结论:微信小程序云开发平台的MySQL,无法通过获取数据库连接信息的方式进行连接,连接只能通过云开发的SDK连接,具体要参考官方文档: 为什么? 因为…...

Mac下Android Studio扫描根目录卡死问题记录
环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中,提示一个依赖外部头文件的cpp源文件需要同步,点…...
嵌入式常见 CPU 架构
架构类型架构厂商芯片厂商典型芯片特点与应用场景PICRISC (8/16 位)MicrochipMicrochipPIC16F877A、PIC18F4550简化指令集,单周期执行;低功耗、CIP 独立外设;用于家电、小电机控制、安防面板等嵌入式场景8051CISC (8 位)Intel(原始…...

【C++】纯虚函数类外可以写实现吗?
1. 答案 先说答案,可以。 2.代码测试 .h头文件 #include <iostream> #include <string>// 抽象基类 class AbstractBase { public:AbstractBase() default;virtual ~AbstractBase() default; // 默认析构函数public:virtual int PureVirtualFunct…...