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 的表字段
posted @   追こするれい的人  阅读(236)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示