Hive 基本使用
Hive 交互式客户端
[root@node-01 ~]# hive
- 执行 HQL 语句
hive (default)> show databases;
-
操作 HDFS 文件系统
hive (default)> dfs -ls /;
-
操作 Linux 本地文件系统
hive (default)> !ls -l /;
数据库操作
- 查看数据库
hive (default)> show databases;
hive (default)> show databases like 'db_*'; #模糊查询
-
创建数据库
Hive 有一个默认的 defalut 库,库目录在 hdfs 下的 /user/hive/warehouse
语法结构:
CREATE (DATABASE|SCHEMA) [IF NOT EXISTS] database_name #数据库名
[COMMENT database_comment] #备注
[LOCATION hdfs_path] #存储路径(默认在仓库根目录)
[MANAGEDLOCATION hdfs_path]
[WITH DBPROPERTIES (property_name=property_value, ...)];注:schema 和 database 的用法是可以互换的,它们的意思是一样
hive (default)> create database database_name;
#判断数据库是否存在
hive (default)> create database if not exists database_name;
#指定数据库存储路径
hive (default)> create database if not exists database_name location "/hw/test/test.db";
数据库建好后,在 hdfs 中会生成一个库目录 /user/hive/warehouse/database_name.db/
- 切换当前数据库
hive (default)> use database_name;
#查看当前使用的数据库
hive (default)> select current_database();
#查看当前数据库用户
hive (default)> select current_user();
- 查看数据库详细描述
hive (default)> desc database database_name;
-
修改数据库
语法结构:
ALTER (DATABASE|SCHEMA) database_name SET DBPROPERTIES (property_name=property_value, ...); # 更改属性信息
ALTER (DATABASE|SCHEMA) database_name SET OWNER [USER|ROLE] user_or_role; # 更改数据库拥有者
-
删除数据库
语法结构:
DROP (DATABASE|SCHEMA) [IF EXISTS] database_name [RESTRICT|CASCADE];
- RESTRICT:删除空数据库(默认)
- CASCADE 级联:删除非空数据库
#删除数据库(空)hive (default)> drop database database_name; hive (default)> drop database if exists database_name; #强制删除数据库(不为空)hive (default)> drop database database_name cascade;
数据库表操作
- 显示表(default 数据库)
hive (default)> show tables;
-
创建表
语法结构:
create [external] table [if not exists] table_name (
col_name data_type [comment '字段描述信息']
col_name data_type [comment '字段描述信息'])
[comment '表的描述信息']
[location '指定表的路径']
[partitioned by (col_name data_type,...)]
[clustered by (col_name,col_name,...)]
[sorted by (col_name [asc|desc],...) into num_buckets buckets]
[row format row_format] #每一行的分隔符、格式
[location location_path]
- Hive 中的默认分隔符是 ^A (\001) ,这是一种特殊的分隔符,使用的是 ASCII 编码的值,键盘是打不出来的
- 表建好后,在 hdfs 中数据库目录下会生成表目录
- 查看表结构
hive (default)> desc table_name;
- 删除表
- Hive 会从 mysql 中清除这个表的元数据(表结构)
- Hive 会从 hdfs 中删除这个表的表目录(表数据)
hive (default)> drop table table_name;
- 清空表数据
hive (default)> truncate table table_name;
HDFS 目录结构
HDFS 为数据库和数据库表创建相应的目录
MySQL 数据库
MySQL 数据库 Hive 表
- dbs :存放 Hive 数据库
- tbls:存放 Hive 的数据表
- column_v2:存放 Hive 的表字段
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现