前言

Hive 是一个构建在 Hadoop 之上的数据仓库工具,用于数据的提取、转换和加载(ETL),并提供了一种类 SQL 的查询语言(HiveQL),使用户能够轻松查询和分析大规模数据集。以下是对 Hive 的一些关键点的详细介绍:

基本概念

  • HiveQL: Hive 提供的查询语言类似于 SQL,支持常用的查询功能,如选择、过滤、聚合和连接等。

  • : Hive 使用表来存储数据,表的数据可以存储在 Hadoop HDFS 中。Hive 支持不同的表类型:

    • 管理表(Managed Tables):当删除表时,表的数据也会被删除。

    • 外部表(External Tables):数据存储在外部位置(如 HDFS),删除表时数据不会被删除。

  • 分区: Hive 允许对表进行分区,分区可以帮助提高查询性能。数据可以按某个列进行分区,使得查询时只扫描相关的分区。

  • : 在分区的基础上,Hive 还支持桶(Bucketing),数据可以在分区内进一步分散到多个文件中。桶的数目由 CLUSTERED BY 子句定义。

架构

Hive 的架构主要由以下几个部分组成:

  • Hive Metastore: 用于存储 Hive 表的结构和元数据(如表名、字段名、数据类型等)。Metastore 是 Hive 的核心部分,使用关系型数据库(如 MySQL、PostgreSQL 等)来存储这些元数据。

  • Driver: Hive 的驱动程序接收 HiveQL 查询并将其编译为 MapReduce 作业。

  • Compiler: HiveQL 查询会被编译成多个 MapReduce 任务,便于在 Hadoop 上执行。

  • Execution Engine: 执行编译后的 MapReduce 作业并处理结果。

主要特性

  • 扩展性: Hive 支持用户自定义函数(UDF),用户可以根据需要扩展 Hive 的功能。

  • 数据存储: Hive 可以与多种数据存储系统集成,如 HDFS、HBase、Amazon S3 等。

  • 兼容性: Hive 兼容多种数据格式,包括文本、Parquet、ORC、Avro 等,支持结构化和半结构化数据。

使用场景

Hive 适用于批量处理和数据分析的场景,例如:

  • 大数据处理和分析。

  • 数据仓库和报表生成。

  • 数据挖掘和机器学习的前处理。

安装配置

上传Hive

上传方式可通过本地拖拽文件上传,也可通过连接xftp来拖拽至xshell命令行里实现

解压Hive

将Hive 3.1.2的安装包解压到/root/software 目录下

(如若没有目录则需创建)

mkdir software/
tar -zxvf apache-hive-3.1.2-bin.tar.gz -C software

解压完毕

配置环境变量

在“/etc/profile”文件中配置Hive环境变量 HIVE_HOME和PATH的值,并让配置文件立即生效;

vim /etc/profile

输入以下参数值

export HIVE_HOME=/root/software/apache-hive-3.1.2-bin
export PATH=$PATH:$HIVE_HOME/bin

wq保存并退出

刷新配置

source /etc/profile

修改配置文件

切换到$HIVE_HOME/conf目录下,将hive-env.sh.template复制一份并重命名为hive-env.sh

cd $HIVE_HOME/conf

cp hive-env.sh.template hive-env.sh

使用vim编辑器进行编辑,在文件中配置HADOOP_HOME、 HIVE_CONF_DIR以及HIVE_AUX_JARS_PATH参数的值,将原有 值删除并将前面的注释符#去掉

vim hive-env.sh

插入参数值

#将原有的#注释符去掉
HADOOP_HOME=/root/software/hadoop-3.3.0
export HIVE_CONF_DIR=/root/software/apache-hive-3.1.2-bin/conf
export HIVE_AUX_JARS_PATH=/root/software/apache-hive-3.1.2-bin/lib

wq保存并退出

MySQL驱动包

上传MySQL驱动包

mysql-connector-java-5.1.47-bin.jar上传至/root/software目录下

解压MySQL驱动包

tar -zxvf mysql-connector-java-5.1.47.tar.gz 

进入解压完的目录

cd mysql-connector-java-5.1.47/

mysql-connector-java-5.1.47-bin.jar拷贝到$HIVE_HOME/lib目录下

cp mysql-connector-java-5.1.47-bin.jar $HIVE_HOME/lib

拷贝完成

配置文件

创建文件

进入$HIVE_HOME/conf

cd $HIVE_HOME/conf

在$HIVE_HOME/conf目录下创建一个名为hive-site.xml的文件

touch hive-site.xml

编辑文件

并使用vim编辑器进行编辑如下内容

配置参数
描述
参数值
javax.jdo.option.ConnectionURL
连接元数据库的链接信息
jdbc:mysql://master:3306/hivedb
?createDatabaseIfNotExist=true&
amp;useSSL=false&useUnicode
=true&characterEncoding=UTF
-8
javax.jdo.option.ConnectionDriverName
连接数据库驱动
com.mysql.jdbc.Driver
javax.jdo.option.ConnectionUserName
连接数据库用户名称
root
javax.jdo.option.ConnectionPassword
连接数据库用户密码
123456
vim hive-site.xml

wq保存退出

接着登录到mysql

mysql -u root -p123456

初始化元数据

使用schematool命令,通过指定元数据库类型为“mysql”,来初始化源数据库的元数据

初始化Hive元数据库(修改为采用MySQL存储元数据)

bin/schematool -dbType mysql -initSchema -verbose


出现红框以内的内容就是初始化成功

在Hive客户端下创建管理表

启动Hive CLI

首先,启动Hive命令行界面

hive

这将进入Hive的命令行模式,你将看到类似以下提示符

hive>

创建名为student的管理表

字段 数据类型
id int
name string
  • id(整数类型)

  • name(字符串类型)

表的结构如上:

使用以下SQL语句

CREATE TABLE student (
  id INT,
  name STRING
);

执行此命令后,Hive会在默认数据库下创建一个管理表student

查看表

创建表后,你可以通过以下命令查看刚创建的表

SHOW TABLES;

你会看到输出如下,表示表已成功创建

查看表结构

也可以查看表的详细结构

输入以下命令

DESCRIBE student;

使用insert语句插入测试数据

插入数据

假设我们想插入id1name"John Doe"的记录,可输入以下SQL命令

INSERT INTO TABLE student VALUES (1, 'John Doe');

确认数据是否插入

我们可以查询表里的内容来确认数据有没有正确插入成功

SELECT * FROM student;

插入成功

Logo

永洪科技,致力于打造全球领先的数据技术厂商,具备从数据应用方案咨询、BI、AIGC智能分析、数字孪生、数据资产、数据治理、数据实施的端到端大数据价值服务能力。

更多推荐