前言
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 目录下
(如若没有目录则需创建)
- tar -zxvf apache-hive-3.1.2-bin.tar.gz -C software
复制代码
解压完毕
设置环境变量
在“/etc/profile”文件中设置Hive环境变量 HIVE_HOME和PATH的值,并让设置文件立刻生效;
输入以下参数值
- export HIVE_HOME=/root/software/apache-hive-3.1.2-bin
- export PATH=$PATH:$HIVE_HOME/bin
复制代码
wq生存并退出
刷新设置
修改设置文件
切换到$HIVE_HOME/conf目录下,将hive-env.sh.template复制一份并重命名为hive-env.sh
- cp hive-env.sh.template hive-env.sh
复制代码
使用vim编辑器进行编辑,在文件中设置HADOOP_HOME、 HIVE_CONF_DIR以及HIVE_AUX_JARS_PATH参数的值,将原有 值删除并将前面的解释符#去掉
插入参数值
- #将原有的#注释符去掉
- 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
在$HIVE_HOME/conf目录下创建一个名为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 |
wq生存退出
接着登录到mysql
初始化元数据
使用schematool下令,通过指定元数据库类型为“mysql”,来初始化源数据库的元数据
初始化Hive元数据库(修改为接纳MySQL存储元数据)
- bin/schematool -dbType mysql -initSchema -verbose
复制代码
出现红框以内的内容就是初始化乐成
在Hive客户端下创建管理表
启动Hive CLI
起首,启动Hive下令行界面
这将进入Hive的下令行模式,你将看到雷同以下提示符
创建名为student的管理表
表的结构如上:
使用以下SQL语句
- CREATE TABLE student (
- id INT,
- name STRING
- );
复制代码
执行此下令后,Hive会在默认数据库下创建一个管理表student
查看表
创建表后,你可以通过以下下令查看刚创建的表
你会看到输出如下,表示表已乐成创建
查看表结构
也可以查看表的具体结构
输入以下下令
使用insert语句插入测试数据
插入数据
假设我们想插入id为1,name为"John Doe"的记录,可输入以下SQL下令
- INSERT INTO TABLE student VALUES (1, 'John Doe');
复制代码
确认数据是否插入
我们可以查询表里的内容来确认数据有没有正确插入乐成
插入乐成
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |