1.简介

The Apache Hive ™ data warehouse software facilitates reading, writing, and managing large datasets residing in distributed storage using SQL. Structure can be projected onto data already in storage. A command line tool and JDBC driver are provided to connect users to Hive.

Hive是一个基于 Hadoop的数据仓库软件,其核心在于存储分析数据。

Hive可以存储大数据量(PB级)的结构化数据,同时支持绝大部分 SQL语法。可以在命令行直接使用 SQL分析数据,也可以使用 Spark程序或者 Java程序来操作其中的数据。

更多权威内容见官网:Apache Hive TM

2.名词解释

  • Beeline

    Beeline是 Hive 0.11版本引入的新命令行客户端工具,它是基于 SQLLine CLI的 JDBC客户端。

  • Hive Metastore Server

​ 元数据服务,负责提供 hive里面创建的数据库、表、分区和数据存储目录等元数据。元数据默认存储在自带的 derby数据库中,但是 生产上一般使用 MySQL来进行存储。

  • HiveServer2

    HiveServer2(HS2)是一个服务端接口,使远程客户端可以执行对 hive的查询并返回结果。 启动 hiveServer2服务后,就可以使用jdbc,odbc,或者 thrift的方式连接。

  • MapReduce

    MapReduce是一种大数据量处理的编程模型,也是 hive默认的执行引擎,其他的执行引擎还有 spark。

  • Partition

    分区,为了更加快速的过滤数据,生产上一般都会给表分区,比较常见的分区方式有按天、按月和按批次分区。

3.Hive命令行

使用 beeline就可以进入 hive的命令行,如下:

也可以直接指定服务器地址账户信息,如下:

beeline -u jdbc:hive2://<hive-server2>:10000 -n <user> -p <password>

退出命令行

# 为了避免丢失 hive历史命令,建议使用此命令退出
!exit

4.数据库及表操作

4.1 数据库操作

首先使用 beeline命令进入到 hive的命令行。

  1. 查看现有的数据库

    show databases;
    
  2. 切换数据库

    use db2;
  3. 创建数据库

    # --1.直接创建数据库,若数据库已存在会报错
    create database db5;# --2.先判断数据库是否存在,不存在则创建,反之什么都不做
    create database if not exists db5;
  4. 删除数据库

    drop database db5;

4.2 表操作

下面的命令均需要在 hive命令行中操作。

  1. 查看表

    # 先切换到目标数据库
    use db5;
    show tables;
  2. 创建表

    # --1.创建普通表,同样支持 if not exists命令
    # 常用的数据类型有:string,int,date,float
    create table table2(field1 string,field2 int
    );# --2.创建分区表
    # 首先开启分区
    set hive.exec.dynamic.partition=true;
    set hive.exec.dynamic.partition.mode=nonstrict;
    # 建表
    create table table3(field1 string,field2 date
    )partitioned by(day string)
    row format delimited fields terminated by '\t';# --3.从现有表创建一张新表,两张表的 schema信息完全一样
    create table table5 like table3;
  3. 删除表

    drop table table3;
    
  4. 修改表

    alter table table2 rename to table002;
    
  5. 清空表数据

    truncate table table2;

5.查询和插入数据

5.1 查询数据

通过 SQL查询 hive表中的数据

# 查询某张表的 10条数据(与 MySQL的语法十分接近)
select * from table2 limit 10;# 查询表中数据量
select count(*) from table2;

通过 HDFS命令查看 hive表所占的存储空间

# /user/hive/warehouse/是 hive数据在 hdfs上存储的默认路径
# testdb01是数据库名,table2是目标表的名称
hdfs dfs -du -s -h /user/hive/warehouse/testdb01.db/table2
#6.6 G  19.7 G  /user/hive/warehouse/testdb01.db/table2

5.2 插入数据

# 往普通表插入数据
insert into table table2 values("hello",2022);# 往分区表插入数据
insert into table table3 PARTITION(day='20220118') values("hello",2022);

6.导入和导出数据

6.1 导入数据

# 从本地磁盘导入数据到 hive表里面
# 此命令需要在 hive命令行里面执行
# 普通表
load data local inpath '/opt/test.csv' into table testdb01.table3;# 分区表
load data local inpath '/opt/test.csv' into table testdb01.table3 PARTITION (day='20220118');

6.2 导出数据

# 将 hive表里面的数据以 MapReduce任务的方式导出到本地磁盘
# 此命令需要在 hive命令行里面执行
insert overwrite local directory '/tmp/table3-export' select * from testdb01.table3;

7.角色授权

一般情况下 hive账户拥有最高权限,因此可以使用 hive账户给其他账户赋权限。

# 给 root用户赋予管理员权限
create role admin;
grant all on server server1 to role admin;
grant role admin to group root;

8.总结

本文的目标是简单介绍 hive,给出 hive常见的操作,希望不了解 hive的人也能根据本文把 hive用起来。

Hive 简明使用教程相关推荐

  1. Visual SourceSafe简明培训教程

      名称 Visual SourceSafe简明培训教程 (Visual SourceSafe Training Short Course) 作者 晨光(Morning) 简介 对于采用Visual ...

  2. 简明docker教程

    简明docker教程 一.什么是docker 二.docker与虚拟机比较 三.安装docker 四.基本概念 1.镜像 2.容器 3.数据卷 4.挂载 五.参考资料 有收获的话请加颗小星星,没有收获 ...

  3. python简单入门_Python简明入门教程

    本文实例讲述了Python简明入门教程.分享给大家供大家参考.具体如下: 一.基本概念 1.数 在Python中有4种类型的数--整数.长整数.浮点数和复数. (1)2是一个整数的例子. (2)长整数 ...

  4. 简明python教程在线-简明python教程

    广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品.未来,我们一起乘风破浪,创造无限可能. usrbinpython#hello_world.pyprinthell ...

  5. 简明python教程购买-自学Python买什么书?

    简单地总结一下: <父与子的编程之旅> /> 如果是零基础,不懂编程,甚至计算机基础都比较薄弱的.推荐一本叫做<父与子的编程之旅>,老版本叫<与孩子一起学编程> ...

  6. python新手入门教程-Python简明入门教程

    本文实例讲述了Python简明入门教程.分享给大家供大家参考.具体如下: 一.基本概念 1.数 在Python中有4种类型的数――整数.长整数.浮点数和复数. (1)2是一个整数的例子. (2)长整数 ...

  7. 简明python教程购买-简明python教程哪版(python看什么书)

    简明 python 教程 这书 有实体书吗 有 学习Python 用哪本书好 对于零基础入门的人来说,对于Python习还是有点懵懂的,如果有一些书籍看来引导,学起来难度也会减低很多!所以向大家推荐这 ...

  8. 简明docker教程 1

    <!-- TOC --> 简明docker教程 一.什么是docker 二.docker与虚拟机比较 三.安装docker 四.基本概念 1.镜像 2.容器 3.数据卷 4.挂载 五.参考 ...

  9. Android简明开发教程二十一:访问Internet 绘制在线地图

    在例子Android简明开发教程十七:Dialog 显示图像 中我们留了一个例子DrawMap()没有实现,这个例子显示在线地图,目前大部分地图服务器都是将地图以图片存储以提高响应速度. 一般大小为2 ...

最新文章

  1. Wireshark基本介绍和学习TCP三次握手
  2. wordpress插件 WBOLT百度推送管理 3.4.6 Pro PJ
  3. Java利用jacob实现文档格式转换
  4. OpenShift 4.10 不可变新特性 - 利用 MachineConfig 发现节点配置漂移
  5. 币安宣布Terence Zeng担任大中华区业务负责人
  6. android之添加raw文件
  7. 自强学堂mysql_Django ——自强学堂学习笔记
  8. keil C51代码优化等级介绍
  9. Unity3D 2D设计小游戏移动幻影的实现
  10. 前端JS获取ModelMap的值 2020-09-03
  11. js处理json数组
  12. 启英泰伦cl1122模块学习笔记
  13. 提取PDF内容保存到Excel--Python实现
  14. 嵌入式板卡在麻醉系统中的应用
  15. Jackson获取某个子节点的值并将其转化为Java的对象数组
  16. javascript ==等于与===恒等于
  17. Codeforces 1430 A. Number of Apartments
  18. loadimage 在picture控件上加载位图失败
  19. java基础面试,java面试评价表评语
  20. 夯实Java基础系列3:一文搞懂String常见面试题,从基础到实战,更有原理分析和源码解析!

热门文章

  1. 关于网上购物流程和如何维护网购权益
  2. 战战兢兢的第一次乘坐飞机之旅
  3. 吴恩达深度学习课程第五课笔记——序列模型
  4. how to batch delete weibo,chrome中录制鼠标操作流程
  5. 【ARM】STM32内置DFU的使用
  6. elementui表格固定列错位
  7. 美国人初学Python之六
  8. photoshop cc 与photoshop cs6 的区别
  9. 全脑速度心得笔记(1)
  10. Yii使用find findAll查找使用