前言
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
的管理表
字段数据类型idintnamestring
id
(整数类型)name
(字符串类型)
表的结构如上:
使用以下SQL语句
CREATE TABLE student (
id INT,
name STRING
);
执行此命令后,Hive会在默认数据库下创建一个管理表
student
查看表
创建表后,你可以通过以下命令查看刚创建的表
SHOW TABLES;
你会看到输出如下,表示表已成功创建
查看表结构
也可以查看表的详细结构
输入以下命令
DESCRIBE student;
使用insert语句插入测试数据
插入数据
假设我们想插入
id
为
1
,
name
为
"John Doe"
的记录,可输入以下SQL命令
INSERT INTO TABLE student VALUES (1, 'John Doe');
确认数据是否插入
我们可以查询表里的内容来确认数据有没有正确插入成功
SELECT * FROM student;
插入成功
版权归原作者 小木日① 所有, 如有侵权,请联系我们删除。