hive从入门到放弃(一)——初识hive

之前更完了《Kafka从入门到放弃》系列文章,本人决定开新坑——hive从入门到放弃,今天先认识一下hive。
还没看的可以点击跳转阅读:《Kafka从入门到放弃》

hive介绍

hive是一个开源的用于大数据分析和统计的数据库工具,它的存储基于HDFS,计算基于MapReduce或Spark,可以将结构化数据映射成表,并提供类SQL查询功能。

特点

  • 提供类SQL查询,容易上手,开发方便
  • 封装了很多方法,尽量避免了开发MapReduce程序,减少成本
  • 支持自定义函数,可以根据需求实现函数
  • 适用于处理大规模数据,小数据的处理没有优势
  • 执行延迟较高,适合用于数据分析,不适合对时效性要求较高的场景

hive的架构

在这里插入图片描述

  • MetaStore:元数据,数据的数据,比如某个表的元数据,包括表名、表所属的数据库、表的类型、表的数据目录等;
  • CLI(命令行接口)、JDBC:用户接口,用以访问hive;
  • Sql Parser 解析器:将SQL转换成抽象语法树,一般用第三方工具库完成;对抽象语法树进行语法分析,比如表是否存在、字段是否存在、SQL语义是否有误;
  • Physical Plan 编译器:将抽象语法树编译生成逻辑执行计划;
  • Query Optimizer 优化器:对逻辑执行计划进行优化;
  • Execution 执行器:把逻辑执行计划转换成可以运行的物理计划。对Hive而言,就是 MR/Spark;
  • HDFS:hive数据文件存放的地方。

不熟悉 HDFS 的朋友可以点击传送:《大数据 | 分布式文件系统HDFS》

hive运行机制

当创建表的时候,需要指定HDFS文件路径,表和其文件路径会保存到MetaStore,从而建立表和数据的映射关系。当数据加载如表时,根据映射获取到对应的HDFS路径,将数据导入。

用户输入SQL后,hive会将其翻译成MapReduce或者Spark任务,提交到Yarn上面执行,执行成功将返回结果。

*hive默认将元数据存储在derby数据库中,但其仅支持单线程操作,若有一个用户在操作,其他用户则无法使用,造成效率不高;
而且当在切换目录后,重新进入Hive会找不到原来已经创建的数据库和表,
因此一般用MySQL存储元数据。

hive与数据库

可能有些朋友会认为,hive是数据库,因为它提供了类SQL查询功能。但其实除了这一点和数据库相似以外,其它的根本就没有多少共性。

  • 数据库支持事务,可读可写;而hive不支持事务,一般用于读多写少的情况,不建议改动数据,因为数据存储在HDFS中,而HDFS的文件不支持修改;
  • hive延迟比较大,因其底层是MapReduce,执行效率较慢。但当数据规模较大的情况下,hive的并行计算优势就体现出来了,数据库的效率就不如hive了;
  • hive不支持索引,查询的时候是全表扫描,这也是其延迟大的原因之一;

*hive在0.14以后的版本支持事务,前提是文件格式为 orc 格式,同时必须分桶,还必须显式声明 transactional=true

hive的数据类型

数字类

类型长度
TINYINT1-byte
SMALLINT2-byte
INT/INTEGER4-byte
BIGINT8-byte
FLOAT4-byte
DOUBLE8-byte
DECIMAL-

日期类

类型版本
TIMESTAMP0.8.0以后
DATE0.12.0以后
INTERVAL1.2.0以后

字符类

类型版本
STRING-
VARCHAR0.12.0以后
CHAR0.13.0以后

Misc类

类型版本
BOOLEAN-
BINARY0.8.0以后

复合类

类型版本备注
ARRAYS0.14.以后ARRAY<data_type>
MAPS0.14.以后MAP<primitive_type, data_type>
STRUCTS-STRUCT<col_name : data_type [COMMENT col_comment], …>
UNION0.7.0以后UNIONTYPE<data_type, data_type, …>

小结

本文从hive的特点、架构及运行机制开始,并将hive与数据库做对比,简单介绍了hive,同时对hive的数据类型做一个简单的介绍。

如果觉得写得还不错,麻烦点个小小的赞支持一下作者。
持续关注【大数据的奇妙冒险】,解锁更多知识。

转载请注明出处【大数据的奇妙冒险】

  • 17
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Spark SQL是Spark生态系统中的一个组件,它提供了一种基于结构化数据的编程接口。Spark SQL支持使用SQL语言进行数据查询和处理,同时还支持使用DataFrame和Dataset API进行编程。Spark SQL还提供了与Hive集成的功能,可以使用Hive SQL语言查询和处理数据。Hive SQL是Hadoop生态系统中的一个组件,它提供了一种基于SQL语言的数据仓库解决方案。通过Spark SQL与Hive集成,可以在Spark中使用Hive SQL语言进行数据查询和处理,同时还可以利用Spark的分布式计算能力加速数据处理。 ### 回答2: Spark SQL 是基于 Spark 构建的一个模块,它使得使用 SQL 访问结构化数据成为了可能。Spark SQL 结合了 Spark 强大的分布式计算能力和 SQL 的易用性,能够处理从结构化数据到半结构化数据和无结构化数据的查询。Spark SQL 提供了一个统一的数据访问接口,支持从多种数据库和文件格式读取数据,也支持在 Hadoop HDFS 上进行分布式计算。 Hive SQL 是一个 SQL 的扩展,可以让用户使用 SQL 查询 Hadoop HDFS 中的数据。Hive SQL 可以将 SQL 查询转化为 MapReduce 作业,以便在 Hadoop 上运行。类似于 Spark SQL,Hive SQL 也可以支持从多种文件格式和存储系统中读取数据,并可以使用 HiveQL 对数据进行查询。HiveQL 是 Hive SQL 的 SQL 方言,它包含了 SQL 非常基础的功能,而且还包含了一些扩展功能,例如用户自定义函数和 MapReduce 脚本。 Spark SQL 和 Hive SQL 之间还有一些其他的区别。其中,最明显的区别就在于 Spark SQL 是内存计算,而 Hive SQL 是基于磁盘计算。由于 Spark SQL 可以在内存中处理数据,因此具有更快的查询速度和更好的性能。此外,Spark SQL 还具有更好的支持复杂数据类型的能力。 总的来说,Spark SQL 和 Hive SQL 都是非常优秀的分布式计算平台和 SQL 扩展,它们带来了很多的便利性和高效性,使得大数据的处理和分析变得更加容易和高效。学习和掌握这两个技术,对于从事大数据开发和处理的人员来说是非常重要的。 ### 回答3: Spark是一个开源的分布式计算引擎,它的出现很大程度上改变了大数据处理的方式,同时它也为很多数据工程师提供了灵活、高效的数据处理解决方案。Spark SQL是Spark被广泛使用的一个组件,它提供了一种统一的数据处理接口,让用户可以在一个高度优化的引擎上进行SQL查询以及数据处理。 Spark SQL可以与Hive集成,因为Hive的底层也是使用了map-reduce模式。在使用Spark SQL的时候,用户可以根据需要在命令行模式或者使用脚本来进行数据处理。而且,Hive SQL 可以访问 Hadoop 组件的数据,包括HDFS,HBase,和S3等等,使得Spark SQL能够进行更多场景的数据处理。 在使用Spark SQL与Hive SQL,用户可以使用类似于SQL的语言进行数据处理。这些语言有很多的常见操作,例如join,groupBy,orderBy等。Spark SQL也支持一些比较高级的数据操作,例如窗口函数、自定义聚合函数等,这些操作可以让用户更加灵活的处理数据,并且降低了用户对于数据处理的技术门槛。 总之,Spark SQL与Hive SQL对于数据处理的灵活性和性能都具有非常高的优势。虽然它们之间有所不同,但是在很多场景下,Spark SQL和Hive SQL也可以结合使用来提高数据处理效率和完成更加复杂的任务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值