HIVE的由来:

最初由Facebook基于HDFS开发出来的一套数据仓库工具。

HIVE可以干什么?

HIVE可以将已经结构化的数据映射成一张表,然后可以使用HIVE语言像写T-SQL一样查询数据。而实际上,最后的HQL语句是被解析成了MapReduce任务去执行数据抽取、转换和加载工作。

HIVE的特点:

特点就是开发成本和学习成本低。只要你会写T-SQL你就会写HQL。因为如果我们要去提取HBase的文件块或者HDFS的文件来分析数据,就必须写复杂的MapReduce过程,但是如果用HIVE,它就帮你干了生成MapReduce过程这事。可以这么理解,HIVE就是一个SQL接口,可以方便我们查询HDFS的数据。百度百科上把它定义为数据仓库工具,准确一点说它是一个BI的分析工具。为什么这么讲?因为它身上的缺点决定了它只是一个BI的分析工具。缺点就是HIVE的数据不可更改,HDFS的文件是怎样它就是怎样。它只是把HDFS的数据复制到表所在的HDFS目录中,然后再用MapReduce方法操作数据。这就决定两点,首先是延迟或者无法实时查询数据。

HIVE数据管理:

可以这么理解,HIVE具备了关系数据库的许多特性,诸如像表、执行计划和T-SQL语法。当然不同的是,最后HIVE去操作的是HDFS的文件,而不是像SQL SERVER下面的页。那么也就不难理解HIVE的数据管理了:元数据存储、数据存储、用户接口和(解析器、编译器、优化器)。

元数据存储:和关系数据库中元数据一样,记录着表的结构信息和属性,比如表所在的目录,表是否为外部表,还有像分区的信息。这部分信息是存在MySQL或者Derby中的。

数据存储:和关系数据库不一样的是,HIVE的数据是没有类型的,也可以理解就是全部都是字符,栏位是通过列分隔符,行是通过行分隔符区分的。它就像ETL中加载一个平面文件,我们需要制定特定的分隔符才可以解析文件中的数据并加载到目标表中去。那说到了数据存储,HIVE中的数据存储逻辑单位又是怎样的呢?和关系数据库有什么相同点和区别的?HIVE的数据存储模型分为:Table、External Table、Partition和Bucket。可以说如果你了解SQL Server或者Oracle这样的数据库,基本上你就明白了。

Table:也就是关系数据库的表,这点没什么讲的。唯一一点需要讲的就是Table对应了HDFS下的一个目录。

External Table:和Oracle下的External Table概念是一样的。也就是说表不是来源于HDFS或者HBase的文件,数据是外部源的。这里我还没学到。估计也是和Oracle一样支持像Excel这种外部文件。

Partition和Bucket:为什么把两个一块讲呢?因为他们有相似的地方,就是通过一种维度把Table的数据分割开来存储。Partition和SQL Server下的Partition是相似的,SQL Server下每个Partition对应着一个B-tree,而这里每个Partition则对应着一个目录。而Bucket则和Oracle的Hash分区相似,就是将表的数据进行水平拆分,这点Teradata这样的分布式关系数据库也是利用了Hash算法对数据进行均匀拆分。Partition和Bucket都是拆分数据,不同的是Partition属于range拆分或者说不均匀拆分,拆分后的数据分区数量取决于选定的栏位的数据分布,容易出现数据分布不均匀。而Bucket则是均匀拆分的特点,而且数据还是离散分布的,不会像Partition那样是聚集的。

用户接口:Web界面,数据库连接接口这些都归为用户接口;

解析器、编译器、优化器:解析器对客户端提交的HQL语句进行语法检查、语义检查;编译器把HQL编译后转换成MapReduce任务;优化器寻求最优计划,比如是否要并行之类。

Hadoop ->> HIVE的更多相关文章

  1. Hive创建表格报【Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaException】引发的血案

    在成功启动Hive之后感慨这次终于没有出现Bug了,满怀信心地打了长长的创建表格的命令,结果现实再一次给了我一棒,报了以下的错误Error, return code 1 from org.apache ...

  2. FineReport中hadoop,hive数据库连接解决方案

    1. 描述 Hadoop是个很流行的分布式计算解决方案,Hive是基于hadoop的数据分析工具.一般来说我们对Hive的操作都是通过cli来进行,也就是Linux的控制台,但是,这样做本质上是每个连 ...

  3. hive 使用where条件报错 java.lang.NoSuchMethodError: org.apache.hadoop.hive.ql.ppd.ExprWalkerInfo.getConvertedNode

    hadoop 版本 2.6.0 hive版本 1.1.1 错误: java.lang.NoSuchMethodError: org.apache.hadoop.hive.ql.ppd.ExprWalk ...

  4. hadoop+hive使用中遇到的问题汇总

    问题排查方式  一般的错误,查看错误输出,按照关键字google 异常错误(如namenode.datanode莫名其妙挂了):查看hadoop($HADOOP_HOME/logs)或hive日志 h ...

  5. Hadoop Hive基础sql语法

     目录 Hive 是基于Hadoop 构建的一套数据仓库分析系统,它提供了丰富的SQL查询方式来分析存储在Hadoop 分布式文件系统中的数据,可以将结构 化的数据文件映射为一张数据库表,并提供完整的 ...

  6. Sqoop是一款开源的工具,主要用于在HADOOP(Hive)与传统的数据库(mysql、oracle...)间进行数据的传递

    http://niuzhenxin.iteye.com/blog/1706203   Sqoop是一款开源的工具,主要用于在HADOOP(Hive)与传统的数据库(mysql.postgresql.. ...

  7. Hadoop Hive与Hbase整合+thrift

    Hadoop Hive与Hbase整合+thrift 1.  简介 Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句 ...

  8. Hadoop Hive sql语法详解

    Hadoop Hive sql语法详解 Hive 是基于Hadoop 构建的一套数据仓库分析系统,它提供了丰富的SQL查询方式来分析存储在Hadoop 分布式文件系统中的数据,可以将结构 化的数据文件 ...

  9. Hadoop Hive与Hbase关系 整合

    用hbase做数据库,但因为hbase没有类sql查询方式,所以操作和计算数据很不方便,于是整合hive,让hive支撑在hbase数据库层面 的 hql查询.hive也即 做数据仓库 1. 基于Ha ...

  10. Hadoop Hive sql 语法详细解释

    Hive 是基于Hadoop 构建的一套数据仓库分析系统.它提供了丰富的SQL查询方式来分析存储在Hadoop 分布式文件系统中的数据,能够将结构 化的数据文件映射为一张数据库表,并提供完整的SQL查 ...

随机推荐

  1. HDU_3038 How Many Answers Are Wrong 【带权并查集】

    一.题面 HDU3038 二.分析 用并查集可以方便的判断两个位置是否有关系,这种关系可以通过是否有公共父节点判断,如果有公共父节点则可以直接判断是否正确,如果没有公共父节点,就可以把这个条件与之前的 ...

  2. 洛谷P1443 马的遍历(bfs,注意输出格式)

    题目描述 有一个n*m的棋盘(1<n,m<=400),在某个点上有一个马,要求你计算出马到达棋盘上任意一个点最少要走几步 输入输出格式 输入格式: 一行四个数据,棋盘的大小和马的坐标 输出 ...

  3. AtCoder Beginner Contest 113 B

    B - Palace Time limit : 2sec / Memory limit : 1024MB Score: 200 points Problem Statement A country d ...

  4. python中各进制之间的转换

    偶然翻看进制转换的内容.这里简单做一个记录吧. #十进制转换二进制 >>> bin() '0b1010' #十进制转换十六进制 >>> hex() '0xa' #二 ...

  5. echarts Y轴数据类型不同怎么让折线图显示差距不大

    如果希望在同一grid中展示不同数据类型的折线(1000或10%),那么展现出来的折线肯定显示差距很大,那么怎么让这两条折线显示效果差不多,在之前的项目中碰到了这个问题 每条折线对应的是不同的数据组, ...

  6. JAVA 利用反射自定义数据层框架

    之前的随笔一直都在介绍c#,主要公司最近的业务都是做桌面程序,那么目前c#中的WPF肯定是我做桌面程序的不二之选,做了半年的WPF,也基本摸清了c#写代码的套路和规则(本人之前是两年多的JAVA开发者 ...

  7. temp脚本

    !/bin/bash source ${HOME_DIR}/script/ideploy_dm.inc source ${HOME_DIR}/script/comm_lib home_dir=$(cd ...

  8. 九度oj题目1511:从尾到头打印链表

    题目1511:从尾到头打印链表 时间限制:1 秒 内存限制:128 兆 特殊判题:否 提交:6010 解决:1805 题目描述: 输入一个链表,从尾到头打印链表每个节点的值. 输入: 每个输入文件仅包 ...

  9. 九度oj题目1181:遍历链表

    题目1181:遍历链表 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:2600 解决:1125 题目描述: 建立一个升序链表并遍历输出. 输入: 输入的每个案例中第一行包括1个整数:n(1 ...

  10. 《腾讯游戏人生》微信小程序开发总结

    为打通游戏人生擂台赛与线下商家的O2O衔接,同时响应时下日臻火热的微信小程序,项目团队决定也开发一款针对性的微信小程序,以此方便商家在我们平台入驻并进行擂台赛事的创建和奖励的核销,进一步推广擂台赛的玩 ...