数据仓库建模工具之一——Hive学习第二天

news/2024/12/25 13:17:02/文章来源:https://www.cnblogs.com/shmil/p/18306256

Hive的概述

1、Hive基本概念

1.1 Hive简介

image-20220531201458239

Hive本质是将SQL转换为MapReduce的任务进行运算,底层由HDFS来提供数据存储,说白了hive可以理解为一个将SQL转换为MapReduce的任务的工具,甚至更近一步说hive就是一个MapReduce客户端。

为什么使用Hive?

使用hadoop,成本太高,项目要求周期太短,MapReduce实现复杂查询逻辑开发难度太大。如果使用hive的话,可以操作接口采用类SQL语法,提高开发能力,免去了写MapReduce功能扩展很方便(比如:开窗函数)。

Hive的特点:

1、可扩展性

​ Hive可以自由的扩展集群的规模,一般情况下不需要重启服务

2、延申性

​ Hive支持自定义函数,用户可以根据自己的需求来实现自己的函数

3、容错

​ 即使节点出现错误,SQL仍然可以完成执行

Hive的优缺点:

优点:

​ 1、操作接口采用类sql语法,提供快速开发的能力(简单、容易上手)

​ 2、避免了去写MapReduce,减少开发人员的学习成本

​ 3、Hive的延迟性比较高,因此Hive常用于数据分析,适用于对实时性要求不高的场合

​ 4、Hive 优势在于处理大数据,对于处理小数据没有优势,因为 Hive 的执行延迟比较高。(不断地开关JVM虚拟机)

​ 5、Hive 支持用户自定义函数,用户可以根据自己的需求来实现自己的函数。

​ 6、集群可自由扩展并且具有良好的容错性,节点出现问题SQL仍可以完成执行

缺点:

​ 1、Hive的HQL表达能力有限

​ (1)迭代式算法无法表达 (反复调用,mr之间独立,只有一个map一个reduce,反复开关)

​ (2)数据挖掘方面不擅长

​ 2、Hive 的效率比较低

​ (1)Hive 自动生成的 MapReduce 作业,通常情况下不够智能化

​ (2)Hive 调优比较困难,粒度较粗 (hql根据模板转成mapreduce,不能像自己编写mapreduce一样精细,无法控制在map处理数据还是在reduce处理数据)

Hive和传统数据库对比

hive和mysql什么区别?

image-20220531213145918

1.2 Hive架构

image-20220531214038409

1.2.1 Client

Hive允许client连接的方式有三个CLI(hive shell)、JDBC/ODBC(java访问hive)、WEBUI(浏览器访问 hive)。JDBC访问时中间件Thrift软件框架,跨语言服务开发。DDL DQL DML,整体仿写一套SQL语句。

​ 1)client–需要下载安装包

​ 2)JDBC/ODBC 也可以连接到Hive
​ 现在主流都在倡导第二种 HiveServer2/beeline
​ 做基于用户名和密码安全的一个校验

​ 3)Web Gui
​ hive给我们提供了一套简单的web页面
​ 我们可以通过这套web页面访问hive 做的太简陋了

1.2.2 Metastore

元数据包括表名、表所属的数据库(默认是default)、表的拥有者、列/分区字段、表的类型(是否是 外部表)、表的数据所在目录等。

​ 一般需要借助于其他的数据载体(数据库)

​ 主要用于存放数据库的建表语句等信息

​ 推荐使用Mysql数据库存放数据

​ 连接数据库需要提供:uri username password driver

1.2.3 Driver(面试题:sql语句是如何转化成MR任务的?)

元数据存储在数据库中,默认存在自带的derby数据库(单用户局限性)中,推荐使用Mysql进行存储。

​ 1) 解析器(SQL Parser):将SQL字符串转换成抽象语法树AST(从3.x版本之后,转换成一些的stage),即检验SQL语句是否正确,完整,比如表是否存在、字段是否存在、SQL语义是否有误。

​ 2) 编译器(Physical Plan):将AST编译(从3.x版本之后,转换成一些的stage)生成逻辑执行计划。

​ 3) 优化器(Query Optimizer):对逻辑执行计划进行优化,将一些可以进行合并的计划进行优化。

​ 4) 执行器(Execution):把逻辑执行计划转换成可以运行的物理计划。对于Hive来说,就是 MR/Spark/flink。

1.2.4 数据处理

Hive的数据存储在HDFS中,计算由MapReduce完成。HDFS和MapReduce是源码级别上的整合,两者结合最佳。解释器、编译器、优化器完成HQL查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。

1.4 Hive的三种交互方式

1)第一种交互方式

shell交互Hive,用命令hive启动一个hive的shell命令行,在命令行中输入sql或者命令来和Hive交互。

服务端启动metastore服务(后台启动):nohup hive --service metastore &
进入命令:hive
退出命令行:quit;

2)第二种交互方式

Hive启动为一个服务器,对外提供服务,其他机器可以通过客户端通过协议连接到服务器,来完成访问操作,这是生产环境用法最多的

服务端启动hiveserver2服务:
nohup hive --service metastore &
nohup hiveserver2 &需要稍等一下,启动服务需要时间:
进入命令:1)先执行: beeline ,再执行: !connect jdbc:hive2://master:10000 2)或者直接执行:  beeline -u jdbc:hive2://master:10000 -n root
退出命令行:!exit

3)第三种交互方式

使用 –e 参数来直接执行hql的语句

bin/hive -e "show databases;"

使用 –f 参数通过指定文本文件来执行hql的语句

特点:执行完sql后,回到linux命令行。

vim hive.sqlcreate database bigdata30_test;
use bigdata30_test;create table test1
(id bigint,name string
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';show tables;
hive -f hive.sql

4)hive cli和beeline cli的区别

image-20220531230402802

1.5 Hive元数据

Hive元数据库中一些重要的表结构及用途,方便Impala、SparkSQL、Hive等组件访问元数据库的理解。

1、存储Hive版本的元数据表(VERSION),该表比较简单,但很重要,如果这个表出现问题,根本进不来Hive-Cli。比如该表不存在,当启动Hive-Cli的时候,就会报错“Table 'hive.version' doesn't exist”

2、Hive数据库相关的元数据表(DBS、DATABASE_PARAMS)

DBS:该表存储Hive中所有数据库的基本信息。

​ DATABASE_PARAMS:该表存储数据库的相关参数。

3、Hive表和视图相关的元数据表

​ 主要有TBLS、TABLE_PARAMS、TBL_PRIVS,这三张表通过TBL_ID关联。
TBLS:该表中存储Hive表,视图,索引表的基本信息。
​ TABLE_PARAMS:该表存储表/视图的属性信息。
​ TBL_PRIVS:该表存储表/视图的授权信息。
4、Hive文件存储信息相关的元数据表

​ 主要涉及SDS、SD_PARAMS、SERDES、SERDE_PARAMS,由于HDFS支持的文件格式很多,而建Hive表时候也可以指定各种文件格式,Hive在将HQL解析成MapReduce时候,需要知道去哪里,使用哪种格式去读写HDFS文件,而这些信息就保存在这几张表中。
SDS:该表保存文件存储的基本信息,如INPUT_FORMAT、OUTPUT_FORMAT、是否压缩等。TBLS表中的SD_ID与该表关联,可以获取Hive表的存储信息。
​ SD_PARAMS: 该表存储Hive存储的属性信息。
​ SERDES:该表存储序列化使用的类信息。
SERDE_PARAMS:该表存储序列化的一些属性、格式信息,比如:行、列分隔符。
5、Hive表字段相关的元数据表

​ 主要涉及COLUMNS_V2:该表存储表对应的字段信息。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/744954.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

三分钟了解自定义表单自定义工作流的多个优势

如果想了解自定义表单自定义工作流的优势特点,可以通过本文获取更多详情信息。降本、提高效率、解决信息孤岛是很多企业亟需要解决的问题。什么样的软件平台可以实现这一目标?可以随时来了解低代码技术平台。它当中的自定义表单自定义工作流拥有多个优势特点,可以为企业降低…

jenkins+allure常见问题汇总

1.生成allure报告时,报Can not find any allure commandline installation. 原因:jenkins下载安装allure插件后,没有配置allure路径 解决办法:Manage Jenkins>Tools>Allure Commandine安装2.执行pytest --alluredir=./allure-result --clean-alluredir时,报error: u…

SSM学习路线

Maven Spring Mybatis SpringMVC SSM整合 Spring Boot Mybatis Plus 项目学习

高通Perflock

高通的Perflock是Qualcomm公司开发的一项技术,用于优化设备性能和功耗管理。Perflock是一种锁定机制,允许操作系统或应用程序在需要时对处理器的性能状态进行控制,从而确保在关键任务或高性能需求的情况下,处理器能够维持在高性能状态。 主要功能和特点性能锁定:Perflock允…

vue3+TS从0到1手撸后台管理系统

1.路由配置 1.1路由组件的雏形 src\views\home\index.vue(以home组件为例)1.2路由配置 1.2.1路由index文件 src\router\index.ts //通过vue-router插件实现模板路由配置 import { createRouter, createWebHashHistory } from vue-router import { constantRoute } from ./rou…

黑盒测试用例设计方法三

一、正交实验法 1)正交法原理介绍1、日本人,统计学家提出的 2、使用的工具:正交表 3、统计和分析实验数据,从大量实验中找到合适的实验数据组合(原本用于工业生产的数据组合与实验室的数据挑选) 4、从大量的试验组合中,挑选出一部分具有代表性的点,进行实验,分析数据。…

需求流程之产品愿景和用户画像

1.产品愿景: 羽毛球比赛计分程序旨在为各类羽毛球赛事提供高效、准确且便捷的计分解决方案,提升比赛的组织效率和公正性,同时为运动员、裁判、观众和赛事组织者带来优质的体验。2.用户画像

荣耀折叠,太卷啦

又薄又强,只缺“杀手”……近日的Magic旗舰新品发布会上,荣耀一口气带来了两款新折叠屏旗舰新品——荣耀Magic V3和荣耀Magic Vs3。 荣耀总裁赵明一如既往地自信,向大家一一阐述在折叠屏领域近百亿元研发投入换来的种种“奇迹”:创行业纪录的轻薄,青海湖电池加持,航天特种…

使用 GitHub 跟踪博文数据,并自动同步到 cnblogs

本文将说明如何使用 GitHub 跟踪博文数据并自动同步到 cnblogs 的方法,并做相关的个人使用心得分享导读 开通了博客园的 VIP 发现了会员服务中的 GitHub 跟踪和同步博文数据的功能,测试发现习惯使用 GitHub 的话,这个还是一个挺不错的功能。 本文主要分两部分,一是介绍说明…

极值理论 EVT、POT超阈值、GARCH 模型分析股票指数VaR、条件CVaR:多元化投资组合预测风险测度分析|附代码数据

全文链接:http://tecdat.cn/?p=24182 最近我们被客户要求撰写关于极值理论的研究报告,包括一些图形和统计输出。 本文用 R 编程语言极值理论 (EVT) 以确定 10 只股票指数的风险价值(和条件 VaR) 使用 Anderson-Darling 检验对 10 只股票的组合数据进行正态性检验,并使用 …

PYTHON用时变马尔可夫区制转换(MARKOV REGIME SWITCHING)自回归模型分析经济时间序列|附代码数据

全文下载链接:http://tecdat.cn/?p=22617 最近我们被客户要求撰写关于MRS的研究报告,包括一些图形和统计输出。 本文提供了一个在统计模型中使用马可夫转换模型模型的例子,来复现Kim和Nelson(1999)中提出的一些结果。它应用了Hamilton(1989)的滤波器和Kim(1994)的平滑…

pnpm错误, ERR_PNPM_UNEXPECTED_STORE  Unexpected store location

背景ERR_PNPM_UNEXPECTED_STORE  Unexpected store locationThe dependencies at "C:\Users\acer\Code\Nuxt3\init\node_modules" are currently linked from the store at "C:\Users\acer\.hvigor\caches\v3".pnpm now wants to use the store at "…