2、hive 基本操作

本文详细介绍了Hive的基本操作,包括Hive SQL语法、内部表与外部表的区别、分区的创建与管理、数据导入与统计、Hive的序列化反序列化(Serde)、Beeline和JDBC的使用。此外,还讨论了Hive的动态分区、分桶技术、Lateral view、视图和索引的应用,并提供了实例解析。
摘要由CSDN通过智能技术生成

Hive SQL

在这里插入图片描述

  • 通过分析需求来查看文档来完成指定的需求:
    在这里插入图片描述在这里插入图片描述在这里插入图片描述
  • 查看表中插入的数据
    在这里插入图片描述
  • 如果想查看更加详细的表的结构可以使用下面的sql语句
    在这里插入图片描述在这里插入图片描述
  • 查看表中的信息
    在这里插入图片描述
  • 内部表与外部表在使用时的区别:
    内部表在删除表时会将数据和元数据都会删除;
    外部表在删除表时只会将元数据删除,但是数据还保存在hdfs的文件系统中
    在这里插入图片描述
  • 上述原因分析:
    内部表创建后的数据还由hive进行对数据进行管理;
    外部表创建的只是一个引用,hive不会对其中的数据进行管理。
  • 创建分区时,定义的列的字段不能出现在表的结构中,创建分区可以提高查询检索的效率
    在这里插入图片描述在这里插入图片描述
  • 因为dsn2进行了分区,所以进行导入数据时会报下面的错误:
    在这里插入图片描述在这里插入图片描述在这里插入图片描述
  • 创建两个分区时,hdfs会先按照第一分区的目录创建一级目录,在按第二分区来创建二级目录

在这里插入图片描述

  • 分区的应用:如做日志分区时可以定义(年、月、日三个分区),如果只定义年的分区的时候粒度比较粗不方便实现对日志的检索、但如果定义年、月、日、时、分、秒的分区时粒度太细,不方便对分区进行管理与后期的维护;因此定义分区要根据实际需求来进行分区。
    在这里插入图片描述
  • 添加分区
    在这里插入图片描述
  • 删除分区
    在这里插入图片描述
  • 删除分区时,hive会将该分区关联的所有的分区全都删除
    在这里插入图片描述
  • 创建表时可以通过克隆表的元数据(表的结构),来实现快速来创建表,但是不会克隆数据(表中的数据)
    在这里插入图片描述
  • 创建表时将表的元数据与表中的数据进行复制
    在这里插入图片描述
  • 导入hdfs文件系统的数据
    在这里插入图片描述
  • 如果将数据手动移动到指定的目录后,查看表中的数据也是可以查到相关的数据
    在这里插入图片描述
  • 统计表中的数据并把结果复制到另外一张表中

在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述

Hive Serde、Beeline、JDBC

  • 什么是Serde
    在这里插入图片描述在这里插入图片描述在这里插入图片描述
  • 我们只是Hive Serde这种方式实现了对数据的序列化与反序列化(对数据进行清洗),但是保存在hdfs中的数据还是没有发生任何变化,只是定义好了 读写规则。
    在这里插入图片描述在这里插入图片描述
  • 当新添加的数据没有匹配上表格中的序列化与反序列化规则时,查看表中的数据会显示的行中出现很多的NULL。
  • 关系型数据库是写时检查,而hive是读的时候检查(就是写入的时候并不会检查,当读的时候发现没有匹配规则的时候会显示NULL)。
    在这里插入图片描述
  • Hive Beeline客户端的使用
    在这里插入图片描述
  • 先在node03启动hiveserver2并查看后台进程
    在这里插入图片描述
    在这里插入图片描述
  • 在node04客户端来启动beeline的第一种方式:
    在这里插入图片描述
  • 在node04客户端来启动beeline的第二种方式:

在这里插入图片描述

  • HIve JDBC的运行方式
    在这里插入图片描述在这里插入图片描述
  • Hive函数的书写要查看具体的函数文档
    在这里插入图片描述在这里插入图片描述在这里插入图片描述
  • 此处创建的是临时函数,退出之后函数自动销毁
    在这里插入图片描述在这里插入图片描述

Hive案例讲解

  • 案例一:
    在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

  • 整个sql语句的执行过程会转化为两个map/reduce的job来执行相关的任务
    在这里插入图片描述

  • 查看统计后的前10条数据结果
    在这里插入图片描述

  • 使用hive来实现数据的单词统计的分析思路:
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

  • 如果只是输入set命令可以查看当前hive中的所有的参数设置
    在这里插入图片描述

Hive的动态分区

在这里插入图片描述

  • 使用动态分区需要的一些参数设置:
    在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
  • 无论静态分区还是动态分区,其核心目的都是为了提高查询效率。

Hive分桶

  • hive分桶的概念

在这里插入图片描述 在这里插入图片描述

  • hive是如何进行分桶
    在这里插入图片描述
  • hive分桶应用场景一:
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述在这里插入图片描述
  • 如果要将数据导入分桶表中要先创建普通表,先将数据导入普通表中,
    再创建分桶表,然后通过insert into table bucket_table select colums from tb1;
    在这里插入图片描述在这里插入图片描述

Hive Lateral view、视图、索引

  • 概念:
    在这里插入图片描述

  • 注意explode使用的注意:
    在这里插入图片描述在这里插入图片描述

  • 由于udtf函数后面不能接任何函数或者任何的字段,存在缺点。

在这里插入图片描述

  • Hive视图的概念
  • 在关系型数据库中视图只可以作为查询,但是不能往视图上进行写数据
    在这里插入图片描述在这里插入图片描述
  • Hive索引
    在这里插入图片描述 在这里插入图片描述在这里插入图片描述在这里插入图片描述
  • 索引创建好发现索引库是空的,所以需要重新rebuild索引库,才可以建立好索引库
    在这里插入图片描述在这里插入图片描述
  • 查询相关表中的所有的索引信息
    在这里插入图片描述
  • 删除相关表的索引
    在这里插入图片描述在这里插入图片描述

Hive 运行方式、gui

在这里插入图片描述

  • 1、控制台模式

在这里插入图片描述在这里插入图片描述

  • 2、脚本运行方式

在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

  • 在查看hive参数的时候可以将hive的相关参数写入到文件中,然后在查看
    在这里插入图片描述
  • Hive GUI接口
  • 注意:在启动hive --service hwi 的时候要先启动hive --service metastore服务
    在这里插入图片描述在这里插入图片描述在这里插入图片描述
Hive是一个基于Hadoop的数据仓库工具,用于进行大规模数据分析和查询。下面是Hive的一些基本操作命令: 1. 使用命令`show databases;`可以查看当前所有的数据库。 2. 使用命令`CREATE DATABASE park;`可以创建一个名为park的数据库。实际上,创建数据库相当于在Hadoop的HDFS文件系统创建了一个目录节点,统一存在`/usr/hive/warehouse`目录下。 3. 使用命令`USE park;`可以进入park数据库。 4. 使用命令`show tables;`可以查看当前数据库下的所有表。 5. 使用命令`CREATE TABLE stu (id INT, name STRING);`可以创建一个名为stu的表,其包含id和name两个字段。在Hive,使用的是STRING类型来表示字符,而不是CHAR或VARCHAR类型。所创建的表实际上也是HDFS的一个目录节点。默认情况下,所有在default数据库下创建的表都直接存在`/usr/hive/warehouse`目录下。 6. 使用命令`INSERT INTO TABLE stu VALUES (1, 'John');`可以向stu表插入数据。HDFS不支持数据的修改和删除,但在Hive 2.0版本后开始支持数据的追加,可以使用`INSERT INTO`语句执行追加操作Hive支持查询和行级别的插入,但不支持行级别的删除和修改。实际上,Hive操作是通过执行MapReduce任务来完成的。插入数据后,我们可以在HDFS的stu目录下发现多了一个文件,其存储了插入的数据。因此,可以得出结论:Hive存储的数据是通过HDFS的文件来存储的。 7. 使用命令`SELECT id FROM stu;`可以查询stu表数据,并只返回id字段的值。 需要注意的是,如果想在HDFS目录下自己创建一个分区,并在该分区下上传文件,需要执行一些额外的操作。首先,手动创建的分区在Hive是无法使用的,因为原数据没有记录该分区的信息。要让自己创建的分区被识别,需要执行命令`ALTER TABLE book ADD PARTITION (category = 'jp') LOCATION '/user/hive/warehouse/park.db/book/category=jp';`。这条命令的作用是在原数据表book创建对应的分区信息。另外,还可以使用命令`ALTER TABLE book****** 'nn');`来修改分区。 希望以上信息能对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值