Hadoop ->> HIVE
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的更多相关文章
- Hive创建表格报【Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaException】引发的血案
在成功启动Hive之后感慨这次终于没有出现Bug了,满怀信心地打了长长的创建表格的命令,结果现实再一次给了我一棒,报了以下的错误Error, return code 1 from org.apache ...
- FineReport中hadoop,hive数据库连接解决方案
1. 描述 Hadoop是个很流行的分布式计算解决方案,Hive是基于hadoop的数据分析工具.一般来说我们对Hive的操作都是通过cli来进行,也就是Linux的控制台,但是,这样做本质上是每个连 ...
- 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 ...
- hadoop+hive使用中遇到的问题汇总
问题排查方式 一般的错误,查看错误输出,按照关键字google 异常错误(如namenode.datanode莫名其妙挂了):查看hadoop($HADOOP_HOME/logs)或hive日志 h ...
- Hadoop Hive基础sql语法
目录 Hive 是基于Hadoop 构建的一套数据仓库分析系统,它提供了丰富的SQL查询方式来分析存储在Hadoop 分布式文件系统中的数据,可以将结构 化的数据文件映射为一张数据库表,并提供完整的 ...
- Sqoop是一款开源的工具,主要用于在HADOOP(Hive)与传统的数据库(mysql、oracle...)间进行数据的传递
http://niuzhenxin.iteye.com/blog/1706203 Sqoop是一款开源的工具,主要用于在HADOOP(Hive)与传统的数据库(mysql.postgresql.. ...
- Hadoop Hive与Hbase整合+thrift
Hadoop Hive与Hbase整合+thrift 1. 简介 Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句 ...
- Hadoop Hive sql语法详解
Hadoop Hive sql语法详解 Hive 是基于Hadoop 构建的一套数据仓库分析系统,它提供了丰富的SQL查询方式来分析存储在Hadoop 分布式文件系统中的数据,可以将结构 化的数据文件 ...
- Hadoop Hive与Hbase关系 整合
用hbase做数据库,但因为hbase没有类sql查询方式,所以操作和计算数据很不方便,于是整合hive,让hive支撑在hbase数据库层面 的 hql查询.hive也即 做数据仓库 1. 基于Ha ...
- Hadoop Hive sql 语法详细解释
Hive 是基于Hadoop 构建的一套数据仓库分析系统.它提供了丰富的SQL查询方式来分析存储在Hadoop 分布式文件系统中的数据,能够将结构 化的数据文件映射为一张数据库表,并提供完整的SQL查 ...
随机推荐
- php 编码和解码的函数
URL: urlencode(); //编码 urldecode(); //解码 URL与数组互转: parse_url () http_build_query() base64: base64_en ...
- LeetCode记录之21——Merge Two Sorted Lists
算法和数据结构这东西,真的是需要常用常练.这道看似简单的链表合并题,难了我好几个小时,最后还是上网搜索了一种不错算法.后期复习完链表的知识我会将我自己的实现代理贴上. 这个算法巧就巧在用了递归的思想, ...
- POJ:2456 Aggressive cows(z最大化最小值)
描述 农夫 John 建造了一座很长的畜栏,它包括N (2 <= N <= 100,000)个隔间,这些小隔间依次编号为x1,...,xN (0 <= xi <= 1,000, ...
- BZOJ - 4066 KD树 范围计数 暴力重构
题意:单点更新,大矩阵(\(n*n,n≤10^5\))求和 二维的KD树能使最坏情况不高于\(O(N\sqrt{N})\) 核心在于query时判断当前子树维护的区间是否有交集/当前子节点是否在块中, ...
- phantomjs的和谷歌浏览器的简单使用
一.phantomjs的简单使用 ''' 什么是phantomJs:无界面的浏览器 ''' from selenium import webdriver from time import sleep ...
- Linux mysql中文乱码问题
1.debian系统 (1)mysql 5.5版本之前 vim /etc/mysql/my.cnf 在 [client] 下面加入 default-character-set=utf8 在 [m ...
- PIE SDK过滤控制
1. 功能简介 栅格数据前置过滤是在渲染之前对内存中的数据根据特定的规则进行处理,然后再进行数据渲染.本示例以定标为例进行示例代码编写. 定标(校准)是将遥感器所得的测量值变换为绝对亮度或变换为与地 ...
- mysql 问题总结[转]
一.Can't connect to MySQL server on 'localhost' (10061) 不能连接到 localhost 上的mysql分析:这说明“localhost”计算机 ...
- kafaka安装
wget https://mirrors.cnnic.cn/apache/kafka/2.0.0/kafka_2.11-2.0.0.tgz 解压 Tar -xvf kafka_2.11-2.0.0.t ...
- 读《NoSQL精粹》前三章有感
现在NoSQL很流行,所以买了一本这方面的书,这本书虽然很薄 156页,但是感觉的确是大师的经验之谈,对于自己经验还是很少.无法能完全能心领神会,大师所说的,就像一个人说药苦,你没吃过.再听别人描述也 ...