Hive基础知识

news2024/11/14 13:40:20

1.Hive简介

  Hive是由Facebook开源用于解决海量结构化日志的数据统计工具。Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类SQL查询功能。

2.Hive本质

Hive的本质是将HQL转化成MapReduce程序。

  • Hive处理的数据存储在HDFS。

  • Hive分析数据底层的实现是MapReduce。

  • 执行程序运行在Yarn上。

  • 结构化数据文件和表的映射关系以元数据的形式存储在数据库中(Derby或MySQL)。

3.Hive架构原理

在这里插入图片描述

  • 1.用户接口(Client):CLI(command-line interface)、JDBC/ODBC(jdbc访问hive)。
  • 2.元数据:Metastore:
    • 元数据包括:表名、表所属的数据库(默认是default)、表的拥有者、列/分区字段、表的类型(是否是外部表)、表的数据所在目录等;
    • 默认存储在自带的derby数据库中,推荐使用MySQL存储Metastore
  • 3.Hadoop(HDFS):使用HDFS进行存储,使用MapReduce进行计算。
  • 4.驱动器:Driver:
    • 解析器(SQL Parser) 将SQL字符串转换成抽象语法树AST,这一步一般都用第三方工具库完成,比如antlr;对AST进行语法分析,比如表是否存在、字段是否存在、SQL语义是否有误。
    • 编译器(Physical Plan) 将AST编译生成逻辑执行计划。
    • 优化器(Query Optimizer) 对逻辑执行计划进行优化。
    • 执行器(Execution) 把逻辑执行计划转换成可以运行的物理计划。对于Hive来说,就是MR/Spark

4.Hive的运行流程

在这里插入图片描述

  • 用户通过Hive提供的一些列交互接口向Hive发送命令。
  • Hive接收到命令(SQL)后,使用自己的Driver并结合元数据(MetaStore),将指令翻译为MapReduce。
  • 再将MR提交到Hadoop中执行。
  • 最后,再将执行返回的结果输出到用户交互接口。

5.Hive vs 数据库

数据库可用于在线业务中,而Hive是为数据仓库而设计的。

方面备注
查询语言由于SQL被广泛应用于数据仓库中,因此针对Hive的特性设计了类似SQL的查询语言HQL,熟悉SQL的开发者可以很方便的使用Hive进行开发。
数据规模由于Hive建立再Hadoop集群上并可以利用MapReduce进行并行计算,因此可以支持大规模的数据,相反,数据库可支持的数据规模就相对较小了。
数据更新由于Hive是针对数据仓库应用设计的,而数据仓库的使用场景多是读多写少。因此Hive不建议对数据进行频繁改写,所有的数据都是在加载时确定好。相反,数据库中的数据通常是需要经常进行修改,因此可以使用insert into ……values添加数据,或使用update set 修改数据。
执行延迟Hive在查询数据时,由于没有索引,需要扫描整个表,因此延迟比较高。另一个导致Hive执行延迟高的因素是MapReduce框架。由于MapReduce本身具有较高的延迟,因此,在利用MapReduce执行Hive查询时会有较高的延迟。 相反数据库的执行延迟较低,当然,这个是有条件的,即数据规模较小,当数据规模大到超过数据库的处理能力的时候,Hive的并行计算的优势就凸显出来了。

6.Hive的优缺点

6.1 优点

  • 提供了类SQL语法操作接口,具备快速开发的能力(简单、易上手)。

  • 避免了去写MapReduce,减少开发人员的学习成本。

  • Hive优势在于处理大数据,对于处理小数据没有优势,因为Hive的执行延迟比较高。

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

6.2 缺点

  • Hive的HQL表达能力有限

    • 迭代式算法无法表达。
    • 数据挖掘方面不擅长,由于MapReduce数据处理流程的限制,效率更高的算法却无法实现。
  • Hive的效率比较低

    • Hive自动生成的MapReduce作业,通常情况下不够智能化。
    • Hive调优比较困难,粒度较粗。

7.总结

  • Hive是基于hadoop的数据仓库工具,提供了类SQL语言便于查询计算。
  • Hive本质:将HQL转换MapReduce程序。
  • Hive与数据库的比较在于四个方面:查询语言、数据规模、数据更新、执行延迟

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Git远程操作

目录 分布式版本控制系统 远程仓库 新建远程仓库 管理仓库 issue Pull Request 克隆远程仓库到本地 向远程仓库推送 拉取远程仓库 配置git 忽略特殊文件 给命令配置别名 分布式版本控制系统 我们之前所说的所有内容,都是在本地,也就是只在你的…

Java——抽象类和接口

一、抽象类 1.1、抽象类 使用abstract关键字定义的类称为抽象类 public abstract class Employee {private String name;private int number; }在 Java中抽象类不可以实例化为对象。例如: 1.2、抽象方法 使用abstract关键字定义的方法称为抽象方法。抽象方法没…

IDEA自动导入包

问题 IDEA如何自动导入包 详细问题 项目开发中,笔者常常先将光标瞄准所需导入的类,后使用快捷键AltEnter进行导包操作。这种方式需要逐个处理,相对费事费力,IDEA如何自动导入所有程序所涉及的包呢 解决方案 1、左上角 F i l …

基于Elman神经网络的电力负荷预测(附源码)

一、算法原理 Elman神经网络是一种典型的动态递归神经网络,它是在BP网络基本结构的基础上,在隐含层增加一个承接层,作为一步延时算子,达到记忆的目的,从而使系统具有适应时变特性的能力,增强了网络的全局稳…

2017年全国硕士研究生入学统一考试管理类专业学位联考逻辑试题——纯享题目版

🏠个人主页:fo安方的博客✨ 💂个人简历:大家好,我是fo安方,考取过HCIE Cloud Computing、CCIE Security、CISP、RHCE、CCNP RS、PEST 3等证书。🐳 💕兴趣爱好:b站天天刷&…

碳排放预测模型 | Python实现基于SVR支持向量机回归的碳排放预测模型

文章目录 效果一览文章概述研究内容源码设计参考资料效果一览 文章概述 碳排放预测模型 | Python实现基于SVR支持向量机回归的碳排放预测模型 研究内容 碳排放被认为是全球变暖的最主要原因之一。 该项目旨在提供各国碳排放未来趋势的概述以及未来十年的全球趋势预测。 其方法是…

Quiz 16_3-1: Databases | Python for Everybody 配套练习_解题记录

文章目录 Python for Everybody课程简介Quiz 16_3-1: Databases单选题(1-11)操作题Autograder: Single Table SQL Python for Everybody 课程简介 Python for Everybody 零基础程序设计(Python 入门) This course aims to teach …

CS CK VT系列贴片型铝电解电容器特点

CS CK VT系列贴片型铝电解电容器就是宽温通用品,也就说电性和RVT贴片电解电容器和RST贴片电解电容器一样,105℃2000小时寿命,用于消费类电子。偶尔CS贴片电解电容器,CK贴片电解电容器和VT贴片电解电容器会有缩体产品。

菜鸡shader:L6 人物材质基础模型以及三种透明特效AC、AB和AD

文章目录 人物材质基础模型unity练练看实现代码实现最后效果 透明特效AC效果展示 AB效果展示 AD效果展示 自定义混合模式效果展示 人物材质基础模型 这里是老师布置的作业,要求把之前学过的所有模型都组合起来,组成一个基本的人物材质模型。这里在上作业…

基于安卓的接的快接单平台/基于Android的快的接单平台

【摘要】 随着互联网的趋势的到来,各行各业都在考虑利用互联网将自己的信息推广出去,最好方式就是建立自己的平台信息,并对其进行管理,随着现在智能手机的普及,人们对于智能手机里面的应用接的快接单平台也在不断的使用…

设计模式学习之模板方法模式

设计模式系列往期文章 设计模式学习之策略模式设计模式学习之策略模式在前端的应用设计模式学习之简单工厂模式设计模式学习之工厂方法模式设计模式学习之抽象工厂模式设计模式学习之策略模式和简单工厂模式的对比设计模式学习之观察者模式 模板方法模式是行为型设计模式的一…

获取Alibaba Nacos控制台管理权限

人活着,就得随时准备经受磨难。他已经看过一些书,知道不论是普通人还是了不起的人,都要在自己的一生中经历许多磨难。 磨难使人坚强。 漏洞复现 访问漏洞url 输入默认账号密码:nacos/nacos 成功获取Alibaba Nacos控制台管理权…

全面揭秘!火山引擎边缘 IaaS 混合部署架构实践

2023年6月16日-17日 51CTO WOT全球技术创新大会在北京成功举办。在快速发展的数字化时代,云计算和边缘计算作为科技领域的两大核心驱动力,正引领着全球技术变革的潮流。为了探讨云时代基础设施在科技发展中的关键作用,推动边缘云行业的进一步…

【夏虫语冰】Office操作技巧汇总

文章目录 1、Word技巧1.1 添加题注 2、Visio技巧2.1 快捷键2.2 格式刷 结语 1、Word技巧 1.1 添加题注 在 Word 中添加、删除标题或设置其格式: 可以为图表、公式或其他对象添加题注。 题注是带编号的标签,可将其添加到图表、表格、公式或其他对象。 …

springboot+echarts +mysql制作数据可视化大屏(四图)

作者水平低,如有错误,恳请指正!谢谢!!!!! 项目简单,适合大学生参考 分类专栏还有其它的可视化博客哦! 专栏地址:https://blog.csdn.net/qq_559…

C++类和对象——(对象的赋值拷贝构造函数)

目录 对象的赋值 目录 对象的赋值 1、提出问题: 2、解决办法: 拷贝构造函数 1、拷贝构造函数的原型: 2、调用机制: 3、使用例程代码 总代码工程: 对象的赋值 1、提出问题: 能否使用一个已经构造…

Java——《面试题——网络篇》

前文 java——《面试题——基础篇》 Java——《面试题——JVM篇》 Java——《面试题——多线程&并发篇》 Java——《面试题——Spring篇》 Java——《面试题——SpringBoot篇》 Java——《面试题——MySQL篇》​​​​​​ Java——《面试题——SpringCloud》 Java…

Java——《面试题——设计模式篇》

前文 java——《面试题——基础篇》 Java——《面试题——JVM篇》 Java——《面试题——多线程&并发篇》 Java——《面试题——Spring篇》 Java——《面试题——SpringBoot篇》 Java——《面试题——MySQL篇》​​​​​​ Java——《面试题——SpringCloud》 Java…

QThread

QThread的执行从run()函数的执行开始; 在Qt中建立线程的主要目的就是为了用线程来处理那些耗时的后台操作,从而让主界面能及时响应用户的请求操作。 QThread的使用 链接 work对象 1,继承Qobject; 2,dowork(); 使…

(stm32)Unix时间戳

时间戳计时系统和常用的年月日时分秒计时系统有很大差别 时间戳:只计算从1970年1月1日0点整为0秒,只用最基本的秒来计时,用不进位。 常用计时系统:60秒进位1分钟,60分钟进位1小时,24小时进位1天&#xff…