Apache Hive基础
本节目标
- 了解Hive的作用和优势
- 了解Hive的基本架构
- 了解Hive的数据类型
- 了解Hive的数据库和表操作
- 理解Hive的数据分区
- 理解Hive的数据分桶
4.1 数据仓库
4.1.1 为什么要有数据仓库
在引入数据仓库之前,我们先来聊聊为什么回产生数据仓库?
数据的作用有两个:操作型记录的保存和分析型决策的制定
- 操作型记录的保存意味着企业通常不必维护历史数据,只需要修改数据以反映最新的状态;
- 分析型决策意味着企业需要保存历史的数据,从而可以更精准的来评估现有状况进行决策;
基于后者分析型决策的优化,需要高性能地完成用户的查询,因此引出了数据仓库的概念。
4.1.2 数据仓库概念
数据仓库是一个面向主题、集成的、非易失的、随时间变化的、用来支持管理人员决策的数据集合,数据仓库中包含了粒度化的企业数据。
数据仓库的主要特征是: 主题性 、 集成性 、 非易失性 、 时变性 。
数据仓库处理数据的流程:分析需求
,确认数据源
,ETL处理
,汇总/整合
,数据建模
,分析展现
4.1.3 数据仓库的体系结构
数据仓库的体系结构通常包含4个层次:数据源、数据存储和管理、数据服务以及数据应用。
- 数据源: 数据仓库的数据来源,包括外部数据、现有业务系统和文档资料等。
- 数据存储和管理: 为数据提供的存储和管理,包括数据仓库、数据集市、数据仓库监视、运行与维护工具和元数据管理等。
- 数据服务: 为前端工具和应用提供数据服务,包括直接从数据仓库中获取数据提供给前端使用,或者通过
OLAP
服务器为前端应用提供更为复杂的数据服务。 - 数据应用: 直接面向最终用户,包括数据工具、自由报表工具、数据分析工具、数据挖掘工具和各类应用系统。
4.1.4 数据仓库解决的问题
- 为业务部门提供准确及时的报表
- 为管理人员提供更强的分析能力
- 为数据挖掘和知识发现奠定基础
4.1.5 面临的挑战
随着大数据时代的全面到来,传统数据仓库也面临了如下挑战:
- 无法满足快速增长的海量数据存储需求
- 无法有效处理不同类型的数据
- 计算和处理能力不足
4.2 Hive基本概念![学新通 学新通](/static/whole/images/alert/data-load/load-15.gif)
4.2.1 概述
Hive是建立在Hadoop之上的一种数仓工具。该工具的功能是将结构化、半结构化的数据文件映射为一张数据库表,基于数据库表,提供了一种类似SQL
的查询模型(HQL
),它具有最小的学习曲线,用于访问和分析存储在Hadoop
文件中的大型数据集。
Hive
本身并不具备存储功能,其核心是将HQL
转换为MapReduce
程序,然后将程序提交到Hadoop
集群中执行。
特点:
- 提供简单和优化的模型,编码少于MR(提供了类似
SQL
的查询语言HiveQL
,两者都是基于SQL92标准,底层会自动转化为MapReduce),使得精通SQL
却不了解Java
编程的人也能很好地进行大数据分析; - 灵活性高,可以自定义用户函数(UDF)和存储格式;
Hive
支持在不同的计算框架上运行:mapreduce
,tez(比MapReduce的性能快了50倍)
,有超大的数据设计的计算和存储能力,集群扩展容易;Hive
支持在HDFS和HBase上进行临时查询数据。- 用于ETL和BI工具的成熟JDBC和ODBC驱动程序;
- 统一的元数据管理,可以
presto
/impala
/sparksql
等共享数据; - 执行延迟高,不适合做数据的实时处理,但适合做海量数据的离线处理;
4.2.2 产生背景
Hive
的产生背景主要有两个:
- 使用成本高: 使用MapReduce
直接处理数据时,需要掌握Java
等编程语言,学习成本较高,而且使用MapReduce
不容易实现复杂查询;
- 建立分析型数仓的需求:Hive
支持类SQL
的查询以及支持自定义函数,可以作为数据仓库的工具。
Hive
利用 HDFS
存储数据,使用MapReduce
查询分析数据。将SQL
转换为MapReduce
程序,从而完成对数据的分析决策。
4.2.3 当前Hive的主流版本
选择任何技术的版本要考虑哪些方面:功能,稳定性,可维护性,兼容性
- 策略:靠考虑不新不九的稳定版本
- 当前Hive的主流版本有两个
- hive-1.x 其中使用比较多的是hive-1.2.x的版本,最后一个稳定版本是hive-1.2.2,如果使用这个版本,你的hive将来没法集成spark.
- hive-2.x 现行主流的hive使用版本,现行稳定的hive-2.x版本中,我们选择使用hive-2.3.6
- HDP(商业版大数据环境)2.6.3内置的hive为1.2.1
4.2.5 Hive 元数据管理
- 为了支持schema和数据分区等功能,Hive将元数据保存在关系型数据库中。
- 默认情况下,hive将元数据保存在关系型数据库中。
- 基于缺省Derby的非常适合测试
- 用户之间不共享架构,因为每个用户都有自己的嵌入式Derby实例
- 存储在
metastore_db
目录中,该目录位于启动配置单元的目录中
- 可以轻松切换另一个sql安装,如MySQL,Oracle。
- 作为Hive的一部分的HCatalog将Hive元数据暴露给其他生态系统。
- Hive3.0以上的版本,元数据是默认保存在Hbase里面,解决了HA的问题。
4.2.6 Hive体系架构
Note:解释一下经常遇到的hiveServer1
、hiveServer2
?早期版本的hiveServer(即hiveServer1)因使用Thrift接口的限制,不能处理多于一个客户端的并发请求,在hive-0.11.0版本中重写了hiveServer代码(hiveServer2),支持了多客户端的并发和认证,并且为开放API客户端如JDBC
、ODBC
提供了更好的支持。
- 用户结构主要有三个:
CLI(command line interface)命令行
,JDBC
和Web UI
,CLI
是开发过程中常用的接口,在hive server2 提供新的命令beeline,使用sqlline语法 - metaStore:hive的元数据结构描述信息库,可选用不同的关系型数据库来存储,通过配置文件修改、查看数据库配置信息。
- Driver:解释器、编译器、优化器完成
HQL
查询语句从语法分析、词法分析、编译、优化以及查询计划的生成。生成的查询计划存储在HDFS中,并在随后由MapReduce
调用执行。 - Hive的数据存储在HDFS中,大部分的查询,计算由MapReduce完成
- select * from emp;->操作不会执行mapreduce
- select count(*) from emp; -> 执行mapreduce操作
Hive Interface - CLI 和 Beeline模式的区别
- 有两种工具:Beeline和命令行(CLI)
- 有两种模式:命令行模式和交互模式
purpose(作用) | HiveServer2 Beeline | HiveServer1 CLI |
---|---|---|
Server Connection | beeline -u -n -p | hive -h -p |
help | beeline -h or beeline --help | hive -H |
Run Query | beeline -e beeline -f | hive -e hive -f |
Define Variable | beeline --hivevar key=value | hive --hivevar key=value |
Enter Mode | beeline | hive |
---|---|---|
Connect | !connect | N/A |
List Tables | !table | show tables; |
List Columns | !column | desc table_name; |
Run Query | ||
Save Result | !record !record | N/A |
Run Shell CMD | !sh ls | !ls; |
Run DFS CMD | dfs -ls | dfs -ls; |
Run SQL File | !run | source; |
Check Version | !dbinfo | !hive --version; |
Quit Mode | !quit | quit; |
Purpose HiveServer2 Beeline HiveServer1 CLI
熟悉HDP-Hive环境
-
Hive Interface – 其他使用环境
-
-
Hive Web Interface (As part of Apache Hive)
-
-
--进入Hive cli
-
-
hive -e :执行指定的SQL语句
-
-
hive -f :执行指定的SQL脚本
-
-
hive -e "show databases”
-
-
echo "show databases" > demo.sql && hive -f demo.sql && rm -f demo.sql
-
-
--进入hive beeline
-
-
hive --service hiveserver2 开启服务
-
-
beeline -u jdbc:hive2://hadoop5:10000/db10 -n root -- 使用beeline连接hive
Copy to clipboardErrorCopied
Hive Interface - 其他使用环境
- Hive Web Interface(As part of Apache Hive)
- Hue(Cloudera)
- Ambari Hive View(hortonworks)
- Zeppelin - Hive
- JDBC/ODBC (ETL工具,商业智能工具,集成开发环境)
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhhgkjjg
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
微信运动停用后别人还能看到步数吗
PHP中文网 07-22 -
excel打印预览压线压字怎么办
PHP中文网 06-22