天天看点

Hive常用基础命令Hive常用基础命令

Hive常用基础命令

文章目录

  • Hive常用基础命令
    • 一、打开命令行窗口
    • 二、 基于数据库的操作
        • 1. 数据库
        • 2. 数据表
          • 2.1 查看所有数据表
          • 2.2 创建表
          • 2.3 查看表结构
          • 2.4 建表语句解析
          • 2.5 CTAS – as select方式建表
          • 2.6 CTE (CTAS with Common Table Expression) 建表
          • 2.7 like---复制表结构
          • 2.8 创建临时表
          • 2.9 删除表
          • 2.10 修改表 (Alter针对元数据)
          • 2.11 装载数据
          • 2.12 分区表--静态分区表&&动态分区表
          • 2.13 分桶
          • 2.14视图

一、打开命令行窗口

有两种工具:Beeline和Hive命令行

  1. beeline

    1)启动元数据库(此步可省略)

    hive --service metastore (后台启动:nohup hive --service metastore &)

    2)启动hiveserver2

    hive --service hiveserver2 (后台显启动:nohup hive --service hiveserver2 &)

    3)启动beelin

    beeline -u jdbc:hive2://localhost:10000

    //如果启用beeline 报权限问题的错误

    //关闭hive

    //执行:hdfs dfs -chmod - R 777 /opt/hive/warehouse (hive原数据库的位置)

  2. Hive

    直接输入hive启动hive就可以进入hive命令行窗口

二、 基于数据库的操作

1. 数据库

1) 查看数据

show databases;

ps:查看当前使用数据库 :select current_database();

2) 创建数据库

create database if not exists 库名;

3)删除数据库

drop database if exists 库名 cascade; //强制删除

4)使用数据库

use 库名;

5)查看具体数据库信息

desc 库名;

2. 数据表

2.1 查看所有数据表

show tables;

2.2 创建表
分为内部表和外部表
建表方式参考:[https://blog.csdn.net/little_sloth/article/details/107306027](https://blog.csdn.net/little_sloth/article/details/107306027)
           
2.3 查看表结构

desc 表名

ps:desc formatted 表名(查看表类型)

2.4 建表语句解析
CREATE EXTERNAL TABLE IF NOT EXISTS employee_external (
//表中的字段
    name string
)
COMMENT 'This is an external table' // comment 可选
ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' // 规定字段的分割方式,以行为单位,一行对应一条数据
STORED AS TEXTFILE  // 文件存储类型
LOCATION '路径--到文件夹级'; 
           
2.5 CTAS – as select方式建表

ps: CTAS不能创建partition, external, bucket table

2.6 CTE (CTAS with Common Table Expression) 建表
CREATE TABLE 表名 AS
WITH 
r1 AS  (SELECT 字段 FROM r2 WHERE 。。。。),
r2 AS  (SELECT 字段 FROM 表名 WHERE 。。。。。 ),
r3 AS  (SELECT 字段 FROM 表名 WHERE 。。。。)
SELECT * FROM r1 UNION ALL SELECT * FROM r3;
           
2.7 like—复制表结构
2.8 创建临时表

临时表:应用程序自动管理在复杂查询期间生成的中间数据的方法

表只对当前session有效,session退出后自动删除

表空间位于/tmp/hive-<user_name>(安全考虑)

如果创建的临时表表名已存在,实际用的是临时表

CREATE TEMPORARY TABLE tmp_table_name1 (c1 string);
CREATE TEMPORARY TABLE tmp_table_name2 AS..
CREATE TEMPORARY TABLE tmp_table_name3 LIKE..
           
2.9 删除表
DROP TABLE IF EXISTS 表名 [With PERGE]; // With PERGE直接删除(可选),否则会放到 .Trash目录
TRUNCATE TABLE 表名 ; -- 清空表数据
           
2.10 修改表 (Alter针对元数据)
ALTER TABLE 表名 RENAME TO 表名 ; -- 修改表名
ALTER TABLE 表名 SET TBLPROPERTIES ('comment'='New name, comments'); -- 修改表属性
ALTER TABLE 表名 SET SERDEPROPERTIES ('field.delim' = '$’); -- 修改分割方式
ALTER TABLE 表名 SET FILEFORMAT RCFILE; -- 修正表文件格式
-- 修改表的列操作
ALTER TABLE 表名 CHANGE old_name new_name STRING; -- 修改列名
ALTER TABLE 表名 ADD COLUMNS (work string); -- 添加列
ALTER TABLE 表名 REPLACE COLUMNS (name string); -- 替换列
           
2.11 装载数据
// LOAD用于在Hive中移动数据
LOAD DATA LOCAL INPATH '文件路径,到具体文件的路径' OVERWRITE INTO TABLE 表名;
// 加LOCAL关键字,表示原始文件位于Linux本地,执行后为拷贝数据
LOAD DATA LOCAL INPATH '文件路径,到具体文件的路径' OVERWRITE INTO TABLE 表名 PARTITION (分区字段);
// 没有LOCAL关键字,表示文件位于HDFS文件系统中,执行后为直接移动数据
LOAD DATA INPATH '文件路径,到具体文件的路径'  OVERWRITE INTO TABLE 表名 PARTITION (year=2017, month=12);
           

ps: LOCAL:指定文件位于本地文件系统,执行后为拷贝数据

OVERWRITE:表示覆盖表中现有数据

使用Load时,路径要具体问文件

2.12 分区表–静态分区表&&动态分区表

详见:https://blog.csdn.net/little_sloth/article/details/107292924

2.13 分桶

详见:https://blog.csdn.net/little_sloth/article/details/107435206

2.14视图

详见: https://blog.csdn.net/little_sloth/article/details/107436907