×

hive

Hive有哪些特点?Hive的数据模型是怎样的

jnlyseo998998 jnlyseo998998 发表于2022-11-22 12:14:09 浏览48 评论0

抢沙发发表评论

本文目录

Hive有哪些特点

您好,我是数据僧(头条,公众号,简书),,一名数据相关从业者。下面讲讲我对您这个问题的理解。

Hive是为了解决什么问题,Hive产生的背景,我们以这个为引子,展开回答。

1,MapReduce编程的不变性,如果要处理一些数据处理的任务,会有一定的门槛,并且操作起来不方便。

2,Hdfs上的文件缺少Schema。例如:缺少 字段名,数据类型等,不方面数据进行有效管理。

3,用于解决海量结构化数据的统计问题

4,如果使用MapReduce等计算框架,学习成本比较高

5,在项目周期比较短的情况下,如果使用mapReduce或者其它的开发框架进行开发,无法满足项目对时间的要求。

我们从具体应用场景下看看Hive处于hadoop生态系统的什么位置:

如图:Hive以Hdfs为基本的文件存储,以MapReduce为执行引擎。所以Hive天然就具备了Hdfs,MapReduce的特性。

我们和传统数据库进行对比看看Hive有哪些优势和不足,当然这种不足是特定场景下的,也是Hive不擅长的领域。

hive的编写语法和传统的sql类似,核心的是hive有一套不同与sql的语法规则,最终被解释为mapReduce任务。hive只适合在海量数据下进行批量数据统计分析。

我们在来看看hive和mapReduce之间的关系,如图:

在来看看hive的内部结构示意图

Driver组件:

SQL Parser:编译器,将HQL转换成抽象语法树。

Query Optimizer:查询优化器

Physical Plan,SerDes,Udfs:执行器

解释器、编译器、优化器完成 HQL 查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。生成的查询计划存储在HDFS 中,并在随后有 MapReduce 调用执行。

Metastore组件:Hive将元数据存储在数据库中。Hive 中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等

Hive处理命令的流程示意图:

SQL Parser将SQL语句转换成抽象语法树---》生成逻辑执行计划----》查询优化----》 物理执行计划(SerDes序列化与反序列化,UDFs,执行引擎)

上面主要是从整体上介绍hive,已经hive相关的组件,最后总结下hive有哪些特点:

1,hive延迟高,适合高吞吐量,批量,海量数据处理。

2,语法和SQL相似,学习成本低,避免去写复杂的MapReduce,缩短开发周期。

3,Hive支持自由的扩展集群的规模,一般不需要重启服务。

4,Hive支持自定义函数,用户可以根据自己的需求去定义函数。

5,良好的容错性,节点出现问题,SQL仍然可以成功执行。

。。

整体上来说是继承了HDFS和MapReduce的特点。

数据僧,祝愿每个在数据道路上的人越走越好。你们的关注 是我巨大的动力。欢迎大家在评论区留言,大家一起讨论。

Hive的数据模型是怎样的

Hive并不存储数据,Hive只是一个Sql解析工具

Hive的架构

hive的数据存储依赖于hadoop中的hdfs作为数据的存储源。并且Hive本身也没有计算引擎,也是依赖其他的计算引擎,如:mapreduce,spark,tez

怎样在hive里用SQL查询呢

感谢邀请。

Apache Hive还是我2年前在项目组中构建大数据集数据仓库用到的技术,当时用到的版本是1.5, 现在的版本是2.3.2 增加了许多功能点,如beeline、增加后端计算引擎支持等。

先简单介绍下Apache Hive, 它是Hadoop生态链中的一个数据仓库(Data Warehouse)工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,而sql语句转换为MapReduce任务进行运行,在Hive2.0以上的版本,sql还可以转化为Spark任务,其速度往往比MapReduce任务快的多。

Hive的优点是学习成本低,简单易用。 Hive 定义了简单的类 SQL 查询语言,称为 HiveQL。 允许熟悉 SQL 的开发人员不必开发专门的MapReduce应用就可以对数据进行操作和查询,十分适合数据仓库的统计分析。同时,这个语言也允许熟悉 MapReduce 开发者的开发自定义的 mapper 和 reducer 来处理内建的 mapper 和 reducer 无法完成的复杂的分析工作。

问题中的Hive如何用sql查询信息,更准确的说法是如何调用HiveQL查询信息。熟悉SQL查询方式(select clause)几乎无缝在Hive中查询。

Hive查询语句的语法:

SELECT select_expr, select_expr, ... FROM table_reference ;

下面给出几个例子说明Hive的使用。

1,对文件中的词频进行统计分析。

hive》》 DROP TABLE IF EXISTS docs;hive》》 CREATE TABLE docs (line STRING);hive》》 LOAD DATA INPATH ’input_file’ OVERWRITE INTO TABLE docs;hive》》 CREATE TABLE word_counts

AS

SELECT word, count(1) AS count

FROM

(SELECT explode(split(line, ’\s’)) AS word FROM docs) temp

GROUP BY word

ORDER BY word;

2, 比如说数据文件已经映射为如下表:

a. 获取工资大于25000的人员姓名和职位。

hive》 SELECT Name, Position FROM employee WHERE salary》25000;

b, 获取职位相关人员数量

hive》 SELECT Position, COUNT(1) AS PersonCount FROM employee GROUP BY Postion;

可以看出简单用法时和普通的SQL语句没有太多区别。

【补充】

1,进入Hive终端的方式很直接,在安装好Hive并且配置好环境变量后,直接键入hive 或者beeline就会进入Hive的终端。正常的话就会看到提示符如下:

hive 》 ....

就可以在其中输入其他命令或者语句了。

2, 进入Hive后可以用下列命令查询Hive数据仓库的基本情况,比如表的个数, 表的属性信息等:

hive 》 show tables;
hive 》 describe `tablename’;

希望这个回答可以有帮助,欢迎交流!