首页 > 其他 > 详细

hive整理

时间:2015-10-02 19:55:37      阅读:313      评论:0      收藏:0      [点我收藏+]

1、hive:建立在Hadoop上的数据仓库基础架构,可以存储、查询、分析存储在Hadoop中的大规模数据,提供了简单的类SQL查询语言,称为QL,允许用户开发自定义的mapper、reducer来处理复杂的分析工作

2、Hive架构:

用户接口,包括CLI、Client、WUI

元数据存储在关系数据库中,如mysql

执行顺序:解释器-编译器-优化器-执行器,前3个完成HQL查询语句从词法分析、语法分析、编译、优化及查询计划,生成的查询计划存储在HDFS中,并在随后有MR调用执行

使用HDFS进行存储,使用MR进行计算

3、和普通关系数据库的区别

 

Hive

RDBMS

查询语言

HQL

SQL

数据存储

HDFS

Raw Device or Local FS

索引

执行

MapReduce

Excutor

执行延迟

处理数据规模

4、数据格式:hive中没有定义专门的数据格式,可以由用户指定,需要指定三个属性:(1)列分隔符(空格、\t、\x001)、(2)行分隔符("\n"、\x002)、(3)读取数据的方法

hive中文件有3种格式:TextFile、SequenceFile、RCFile

hive在进行加载时不需要进行数据格式的转换,只是将数据复制到相应的HDFS目录,所以数据加载速度相对数据库要快一些

5、Hive中的数据不允许修改,在加载的时候就已经确定

6、索引:由于Hive中没有索引,当要访问hive数据中满足条件的特定值时,需要暴力扫描整个数据,因此访问延迟要高,但是由于MR的引入,可以并行访问数据,但是不适合在线数据查询

7、hive中除了select * from语句不需要生成MR任务执行外,其它都需要

8、hive包含以下几种数据模型:

(1)table:

每个table在hive中都有一个相应的目录存储数据,如table  a的hdfs目录为/warehouse/a,其中warehouse是hive-site.xml中由hive.metastore.warehouse.dir属性指定,所有的table数据都保存在这个目录下

(2)external table:

数据存储在hdfs中,可以创建分区,并不会将数据移动到仓库目录中

(3)partition:表table的一个partition对应表下的一个目录,所有partition的数据都对应在相应的目录下,如表a包含dt、city两个partition,则对应于 dt = 20100801, ctry = US 的 HDFS 子目录为:/ warehouse /xiaojun/dt=20100801/ctry=US;对应于 dt = 20100801, ctry = CA 的 HDFS 子目录为;/ warehouse /xiaojun/dt=20100801/ctry=CA

(4)buckets:对指定列进行hash,根据hash值切分数据,每个bucket对应一个文件,例如将表a中 user 列分散至 32 个 bucket,首先对 user 列的值计算 hash,对应 hash 值为 0 的 HDFS 目录为:/ warehouse /xiaojun/dt =20100801/ctry=US/part-00000;hash 值为 20 的 HDFS 目录为:/ warehouse /xiaojun/dt =20100801/ctry=US/part-00020

 

hive整理

原文:http://www.cnblogs.com/zhli/p/4852570.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!