为什么80%的码农都做不了架构师?>>>   

产生背景:

Hive最初是应Facebook每天产生的海量新兴社会网络数据进行管理和机器学习的需求而产生和发展的。

Hive 诞生于 facebook 的日志分析需求,面对海量的结构化数据, hive 以较低的成本完成了以往需要大规模数据库才能完成的任务,并且学习门槛相对较低,应用开发灵活而高效。

Hive 是一个基于 hadoop 的开源数据仓库工具,用于存储和处理海量结构化数据。    它把海量数据存储于 hadoop 文件系统,而不是数据库,但提供了一套类数据库的数据存储和处理机制,并采用 HQL (类 SQL )语言对这些数据进行自动化管理和处理。我们可以把 hive 中海量结构化数据看成一个个的表,而实际上这些数据是分布式存储在 HDFS 中的。 Hive 经过对语句进行解析和转换,最终生成一系列基于 hadoop 的 map/reduce 任务,通过执行这些任务完成数据处理。

Wiki上对hive的解释:

Apache Hive数据仓库软件提供对存储在分布式中的大型数据集的查询和管理,它本身是建立在Apache Hadoop之上。

主要提供以下功能:

1)、它提供了一系列的工具,可用来对数据进行提取/转化/加载(ETL);

2)、是一种可以存储、查询和分析存储在HDFS(或者HBase)中的大规模数据的机制;

3)、查询是通过MapReduce来完成的

(并不是所有的查询都需要MapReduce来完成,比如select * from XXX就不需要;在Hive0.11对类似select a,b from XXX的查询通过配置也可以不通过MapReduce来完成,,具体怎么配置请参见本博客《Hive:简单查询不启用Mapreduce job而启用Fetch task》)。

从上面的定义我们可以了解到,Hive是一种建立在Hadoop文件系统上的数据仓库架构,并对存储在HDFS中的数据进行分析和管理;那么,我们如何来分析和管理那些数据呢?

HQL

Hive定义了一种类似SQL的查询语言,被称为HQL,对于熟悉SQL的用户可以直接利用Hive来查询数据。同时,这个语言也允许熟悉 MapReduce 开发者们开发自定义的mappers和reducers来处理内建的mappers和reducers无法完成的复杂的分析工作。Hive可以允许用户编写自己定义的函数UDF,来在查询中使用。

Hive中有3种UDF:

User Defined Functions(UDF)

User Defined Aggregation Functions(UDAF)

User Defined Table Generating Functions(UDTF)

今天,Hive已经是一个成功的Apache项目,很多组织把它用作一个通用的、可伸缩的数据处理平台。

Hive和传统的关系型数据库的区别:

Hive将外部的任务解析成一个MapReduce可执行计划,而启动MapReduce是一个高延迟的一件事,每次提交任务和执行任务都需要消耗很多时间,这也就决定Hive只能处理一些高延迟的应用(如果你想处理低延迟的应用,你可以去考虑一下Hbase)。

Hive缺点1:

由于设计的目标不一样,Hive目前还不支持事务;不能对表数据进行修改(不能更新、删除、插入;只能通过文件追加数据、重新导入数据);不能对列建立索引(但是Hive支持索引的建立,但是不能提高Hive的查询速度。如果你想提高Hive的查询速度,请学习Hive的分区、桶的应用)。

适用场景:

1)、Hive最适合于数据仓库应用程序,适用该应用程序进行相关的静态数据分析,不需要快速响应给出结果,而且数据本身不会频繁变化。

2)、hive是最适合数据仓库应用的,其可以维护海量数据,而且可以对数据进行挖掘,然后形成意见和报告等。

缺点2:

Hive不是一个完整地数据库。Hadoop以及hdfs的设计本身约束和局限性地限制了hive所能胜任的工作。

1)、hive不支持记录级别的更新、插入或者删除操作

其中最大的限制是:Hive目前还不支持事务;

不能对表数据进行修改(不能更新、删除、插入;只能通过文件追加数据、重新导入数据);

hive不支持记录级别的更新、插入或者删除操作,但是用户可以通过查询生成新表或者将查询结果导入到文件中。

不能对列建立索引(但是hive支持索引的建立,但是不能提高hive的 查询速度。如果你想提高hive的查询速度,请学习hive的分区、桶的应用)。

2)、hive查询延时严重

因为Hadoop是 一个面向批处理的系统,而MapReduce任务(job)的启动过程需要消耗较长的时间,所以hive查询延时比较严重。传统数据库中秒级别可以完成的查询,在Hive中,即使数据集相对较小,往往也需要执行更长的时间。

3)、hive不支持事务

如果用户需要对大规模数据使用OLTP功能的话,那么应该选择使用一个NoSQL数据库。例如,和Hadoop结合使用的HBase及Cassandra.

总结:

1)、hive诞生于facebook的日志分析需求

2)、hive处理结构化数据

3)、hive应用场景主要是处理冷数据(只读不写)

因此,它只支持批量导入和导出数据,并不支持单条数据的写入和更新,所以如果要导入的数据存在某些不太规范的行,则需要我们定制一些功能对其进行处理。

4)、hive操作本地数据

一开始,总是把本地数据先传到 HDFS ,再由 hive 操作 hdfs 上的数据,然后再把数据从 HDFS 上传回本地数据。后来发现大可不必如此, hive 语句都提供了“ local ”关键字,支持直接从本地导入数据到 hive ,也能从 hive 直接导出数据到本地,不过其内部计算时当然是用 HDFS 上的数据,只是自动为我们完成导入导出而已。

5)、hive将数据存储在Hadoop中的hdfs文件系统中,并提供了一套类似于关系型数据库的处理机制。

6)、hive将数据存储在表中,表的每一列都有一个相关的类型。Hive支持常见的原语类型并支持复合类型。再加上其查询语言与SQL及其类似,因此,Hive很容易被用户接受并掌握。

道.卡丁

Doug Cutting

命令行界面

CLI

转载于:https://my.oschina.net/HIJAY/blog/503829

hive初识.docx相关推荐

  1. Hive学习之路 (一)Hive初识

    Hive 简介 什么是Hive 1.Hive 由 Facebook 实现并开源 2.是基于 Hadoop 的一个数据仓库工具 3.可以将结构化的数据映射为一张数据库表 4.并提供 HQL(Hive S ...

  2. Hive学习之路(一)Hive初识

    Hive简介 什么是Hive Hive由Facebook实现并开源 是基于Hadoop的一个数据仓库工具 可以将结构化的数据映射为一张数据库表 提供HQL(Hive SQL)查询功能 底层数据是存储在 ...

  3. hive hql文档_大数据学习路线分享hive的运行方式

    大数据学习路线分享hive的运行方式,hive的属性设置: 1.在cli端设置 (只针对当前的session) 3.在java代码中设置 (当前连接) 2.在配置文件中设置 (所有session有效) ...

  4. java hiveconf_Java学习路线分享hive的运行方式

    Java学习路线分享hive的运行方式,hive的属性设置: 1.在cli端设置 (只针对当前的session) 3.在java代码中设置 (当前连接) 2.在配置文件中设置 (所有session有效 ...

  5. 大数据应用技术实验报告六 Hive和MySQL

    MapReduce 实现 HiveQL 常见操作 Join的实现原理: select u.name, o.orderid from order o join user u on o.uid = u.u ...

  6. 上海c语言做游戏培训,0基础C语言游戏逆向课程,培训视频+项目实战

    第一部分 1.Visual Studio IDE的安装和基本使用 1.Visual Studio IDE的安装和基本使用 .docx 1.Visual Studio IDE的安装和基本使用 .mp4 ...

  7. 大数据、云计算该如何学习?

    大数据之Linux+大数据开发篇 [大数据开发学习资料领取方式]:加入大数据技术学习交流群458345782,点击加入群聊,私信管理员即可免费领取 阶段一.大数据.云计算 - Hadoop大数据开发技 ...

  8. 【zookeeper】Apache curator优点介绍

    文章目录 1. 简介 2. 项目组件 2.1 版本 2.2 项目组件 2.3 Maven依赖 3. 案例及功能说明 3.1 创建会话 3.1.1 重试策略 3.1.2 创建节点 3.1.3 删除节点 ...

  9. 不错的大数据课程体系(感谢某机构,希望不属于侵权)

    2019独角兽企业重金招聘Python工程师标准>>> 阶段一.大数据.云计算 - Hadoop大数据开发技术 课程一.大数据运维之Linux基础 本部分是基础课程,帮大家进入大数据 ...

最新文章

  1. POST请求||带参数的POST请求
  2. 腾讯和阿里在B站“打起来了”,你何时见过这场面?
  3. 联想台式机网卡驱动_【装机帮扶站】第339期:联想刃7000:是否还有选购价值?4000价位装机推荐...
  4. 设计模式(第十七式:迭代器模式)
  5. Money 20/20 | 未来金融数字化转型:数字化半径与全栈式战略观
  6. java的核心类库_Java核心类库
  7. linux访问samba命令,smbclient命令
  8. ci mysql空闲连接回收_数据库连接空闲回收问题 CommunicationsException: Communications link failure...
  9. 基于Python/Flask框架的双色球数据采集(爬虫)及大数据可视化平台设计与实现
  10. 条件表达式的学习和使用 实例之闰年的判断
  11. 记录一个vue项目报错UnhandledPromiseRejectionWarning: Unhandled promise rejection.
  12. Franka Emika Panda连接真实机械臂(二)
  13. html表单验证spry,Spry验证表单教案
  14. 数学--逆运算知识点,附推逆函数的一例
  15. 信息学奥赛一本通2038
  16. spark graphx从txt文件中读数据构建图
  17. 软件测试知识点概要-50点(面试圣经)
  18. 寄存器版本\ALIENTEK MiniSTM32 实验0 新建工程实验
  19. 数据治理平台建设过程及部分术语解释
  20. anyHouse-iOS 高仿ClubHouse

热门文章

  1. 鲁迅散文——随感录三十五
  2. runtime-归档
  3. WebView跳转到底部
  4. windows编程(八)
  5. [C.Sharp] 接口函数还可以声明为private
  6. JAVA中深拷贝与浅拷贝(在网上找到的) 希望对于理解深拷贝与浅拷贝有帮助...
  7. Linux下mysql 5.x得到root密码后的另外一种利用方式
  8. Java Web学习(二)数据加密
  9. LuoguP2292 L语言
  10. HP-UX平台安装Oracle11gR2数据库