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

这篇具有很好参考价值的文章主要介绍了hive从入门到放弃(一)——初识hive。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

hive介绍

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

特点

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

hive的架构

hive从入门到放弃(一)——初识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的数据类型

数字类

类型 长度
TINYINT 1-byte
SMALLINT 2-byte
INT/INTEGER 4-byte
BIGINT 8-byte
FLOAT 4-byte
DOUBLE 8-byte
DECIMAL -

日期类

类型 版本
TIMESTAMP 0.8.0以后
DATE 0.12.0以后
INTERVAL 1.2.0以后

字符类

类型 版本
STRING -
VARCHAR 0.12.0以后
CHAR 0.13.0以后

Misc类

类型 版本
BOOLEAN -
BINARY 0.8.0以后

复合类

类型 版本 备注
ARRAYS 0.14.以后 ARRAY<data_type>
MAPS 0.14.以后 MAP<primitive_type, data_type>
STRUCTS - STRUCT<col_name : data_type [COMMENT col_comment], …>
UNION 0.7.0以后 UNIONTYPE<data_type, data_type, …>

小结

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

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

转载请注明出处【大数据的奇妙冒险】文章来源地址https://www.toymoban.com/news/detail-418374.html

到了这里,关于hive从入门到放弃(一)——初识hive的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 大数据入门到放弃第一天:linux的入门

            虚拟机(Virtual Machine,简称VM)是一种在物理计算机上模拟运行的软件实体。它通过虚拟化技术,将一台物理计算机划分为多个虚拟的逻辑计算环境,每个环境都可以独立运行操作系统和应用程序。         虚拟机使得一台物理计算机可以同时运行多个操作系

    2024年02月05日
    浏览(45)
  • 【pyspark从入门到放弃】DataFrame

    pyspark支持通过pypip、conda下载,或者手动下载。 笔者通过 pip install 命令从pypip下载并配置安装了3.5.0版本的Spark。 使用spark的第一步就是拿到一个 SparkSession 对象。最简单的方法是 即,直接使用默认参数创建实例。也可以做一些配置,比如 创建DataFrame DataFrame 是类似 pandas 库中

    2024年01月16日
    浏览(42)
  • 深度学习从入门到不想放弃-6

       这节要讲完距离基础部分就真完事了,不继续在基础中求得基础了,我发现也没人看        书接前文深度学习从入门到不想放弃-5 (qq.com)        前文书写到要合理的设计特征是什么概念,我们再拿两个例子复习一下       比如一个卖车网站,上节我们讲过对物体识别

    2024年01月19日
    浏览(45)
  • C++入门到放弃(01)——引用 #include

    C++中包含头文件存在两种不同的形式,尖括号和双引号\\\"\\\",其区别在于搜索范围和搜索顺序。 以Visual Studio 2022为例,我们创建一个工程,在里面添加主函数main.cpp的文件,以及头文件test.h Project ├── main.cpp └── test.h 只可以访问 系统目录下的头文件(.h),\\\"\\\"可以访问 当前文

    2024年02月16日
    浏览(40)
  • 【CSDN话题】C++从放弃到入门

            C++(c plus plus)是一种计算机高级程序设计语言,既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。 1954年,世界上第一种计算机高级语言 FORTRAN 诞生。 1969年前

    2024年02月08日
    浏览(38)
  • IT入门深似海,入门到放弃你学废了嘛

    我一直觉得 IT行业 程序员行业。甚至觉得 程序员 人群 是一个特殊存在的群体。 入门到放弃,是真的,IT门槛高嘛。 其实吧,IT编程门槛,是有的,但是对于感兴趣的,想学习IT编程同学来说,也是一件容易事情其实。 我突然想讲一下我学编程的第一课,也是最难的。。。。

    2024年02月06日
    浏览(44)
  • SAP 从入门到放弃系列之安全库存

    安全库存的主要目的是以一定数量的库存或时间的作为缓冲区间,以应对供需之间波动的影响。SAP ERP 系统提供两种类型的安全库存:静态安全库存和动态安全库存(即安全天数供应)。 物料主数据设置,MRP2视图,安全库存字段根据基于服务水平历史记录或之前的消耗情况

    2024年02月07日
    浏览(33)
  • 【Eigen】从入门到放弃(一):安装和使用

    Eigen 是C++语言里的一个开源模版库,支持线性代数运算,矩阵和矢量运算,数值分析及其相关的算法。 Eigen适用范围广,支持包括固定大小、任意大小的所有矩阵操作,甚至是稀疏矩阵;支持所有标准的数值类型,并且可以扩展为自定义的数值类型;支持多种矩阵分解及其几

    2024年02月04日
    浏览(55)
  • 老鹅分享:海量后台开发——从入门到放弃

    作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 大家好,我曾是一名鹅厂的后台开发工程师。从 2013 年开始,我就在准备一个后台开发方向的培训文档,并多次在内部培训和腾讯课堂上分享过。 可是,当《数据密集型

    2024年03月09日
    浏览(42)
  • c++从入门到放弃,小白踩坑记录1

    错误问题描述 没有与这些操作数匹配的运算符操作数类型为std::basic_ostream char,std::char traits char unknown-type 错误代码 错误原因 代码的“end”为错误写发,应该是“endl” 修改后的正确代码

    2024年02月06日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包