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 @ 2021-12-14 14:18  追こするれい的人  阅读(226)  评论(0编辑  收藏  举报