-
走进Hive
- 什么是Hive
- Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能,构建在分布式HDFS系统运行的数据库
- 应用场景
- 优缺点
- 优点
- 可扩展:为超大数据集设计了计算/扩展能力(MR作为计算引擎,HDFS作为存储系统)
- 延展性:Hive支持用户自定义函数,用户可以根据自己的需求来实现自己的函数
- 容错:良好的容错性,节点出现问题SQL仍可完成执行
- 执行延迟较高:处理大数据,对于处理小数据没有优势,因为 Hive 的执行延迟比较高
- 缺点
- Hive的HQL表达能力有限[由于 Hive 采用了 SQL 的查询语言 HQL,因此很容易将 Hive 理解为数据库]
- Hive的效率比较低[数据挖掘方面不擅长,由于MapReduce数据处理流程的限制,效率更高的算法却无法实现]
- Hive可控性差
- Hive的HQL表达能力有限,比如不支持UPDATE、非等值连接、DELETE、INSERT单条等。
- 由于Hive自动生成MapReduce作业,HQL调优困难
- 架构
- 用户接口
- 包括命令行(CLI)、客户端(Client)和Web图形化界面(WebGUI)。最常用的是CLI。
- 元数据存储
- 通常是Hive的元数据存储在关系数据库如mysql、derby中。
- 解释器
- 对输入的HiveQL语句进行词法分析和语法分析,并生成词法分析树
- 编译器
- 编译器接收AST作为输入,并将其转换为中间代码表示(Intermediate Representation,IR)。编译器首先对AST进行语法分析和语义检查,以确保查询语句的语法正确且符合语义规则
- 优化器
- 根据查询的特性和数据分布情况,对查询计划进行优化,以减少计算成本和提高查询性能。优化器会生成多个可能的执行计划,并选择最优的计划。
- 执行器
- 根据查询计划生成MapReduce作业,提交到Hadoop进行计算
- 存储位置
- 建立在 Hadoop 之上的,所有 Hive 的数据都是存储在 HDFS 中的。而数据库则可以将数据保存在块设备或者本地文件系统
- 工作原理
- Hive的工作原理简单的说就是一个查询引擎,接收到一个SQL,而后面做的事情包括: 词法分析/语法分析 使用antlr将SQL语句解析成抽象语法树(AST),再将AST转换成逻辑计划[也就是将sql语句转换为MapReduce任务],最后执行计划
- 数据存储
- HDFS模型[Hive的数据库对应HDFS的一个目录]
- Table: 内部表与RDBMS的Table在概念上是类似。每一个Table在Hive中都有一个相应的目录存储数据
- External Table:在创建表的时候可以指定external关键字创建外部表,外部表对应的文件存储在location指定的目录下,向该目录添加新文件的同时,该表也会读取到该文件(当然文件格式必须跟表定义的一致),删除外部表的同时并不会删除location指定目录下的文件,删除的仅仅是一个链接
- Bucket : 将表的列通过Hash算法进一步分解成不同的文件存储。它对指定列计算hash,根据hash值切分数据,目的是为了并行,每一个Bucket对应一个文件,将数据被分成块并存储在集群中的不同节点上。这些块被称为也可以成为桶
- HDFS是Hadoop的分布式文件系统,用于存储和管理大规模数据集
- 数据交换
- 远程服务: 通过 JDBC 等访问来连接 Hive ,这是开发人员最需要的方式
- 数据交换作用:指将Hive中的数据与其他系统或数据源进行交互和分析处理
- 支持的计算引擎
- 常踩的坑
- 字符匹配问题:当字段是字符串型时,where语句=0(int)型来匹配会拉不到数据
- Llap巨坑:关键是几个空间参数的配置,只要配错了,就会出现各种奇怪的问题,Llap:可以将数据预取、缓存到基于yarn运行的守护进程中,降低和减少系统IO和与HDFS DataNode的交互,提高查询效率
- Spark应用创建表时,指定的schema版本为1.2.0,而hive的schema版本为2.3.0,版本不兼容导致。在hvie-site.xml中hive.metastore.schema.verification参数设置为false即可解决。
- hive表中新增字段或者修改字段时,需要使用cascade方式,否则新增字段,回刷数据还是存在为null的情况 、或者删除分区,重新建表,才能解决回刷数据的问题
-
相关阅读:
Netty学习(一)——BIO/伪异步IO/NIO/AIO四种IO模型的演变
【附源码】Python计算机毕业设计数据时代下的疫情管理系统
MySQL第一弹
整理自己平时用到的【快捷键】
cola架构:一种扩展点的实现思路浅析
解压主播狂揽4000w+播放,快手美食赛道又添新风向?
死锁的发生与避免
sql 10
新的U-Net 网络结构
docker搭建Jenkins及基本使用
-
原文地址:https://blog.csdn.net/qq_36204764/article/details/133805895