`

hive应用

    博客分类:
  • Hive
 
阅读更多

1:hive是一个构建在hadoop上的数据仓库平台,hive提供一个被称为Hive查询语言,来查询存储在Hadoop集群中的数据。hive的查询语句会被解析为mapreduce任务,由hadoop集群执行mapReduce任务读取hdfs分布式文件系统中的数据,hive不会在数据加载时进行验证,而是在查询时进行,读时模式。

 

2:hive会为每个数据库创建一个目录。数据库中的表将会以这个数据库目录的子目录形式存储。

 

3:hive本身不存储和计算数据,依赖于hdfs和mapreduce,hive中的表是逻辑表,是元数据。

 

4:hbase是一个分布式的,面向列的开源数据库,它是一个适合于非结构化数据存储的数据库,是物理表。

 

5:  hive与关系性数据库:

存储位置:HDFS和本地文件

数据格式:用户定义和系统决定

数据更新:不支持和支持

索引:无和有

执行:MapReduce和Executor(数据库执行引擎)

执行延迟:高和低

 

6:数据仓库(DW):面向主题,数据稳定,时间而更新,数据模型(星型模型和雪花模型)

 

7:hive的元数据存储:hive的元数据包括表的名字,表的列,表的分区,表的属性(是否是外部表,表的目录位置),存储在关系型数据库中。

hive的内嵌模式使用的是derby数据库联接,不支持多会话,可以使用hive的本地模式,使mysql数据库联接,支持多会话。

 

8:hive的数据存储:存储是在hadoop文件系统

内部表和外部表:内部表的操作包含两个步骤:表创建过程和数据加载,删除表时元数据和hdfs文件都会删除

外部表创建只有一个步骤,创建表和加载数据同时完成,删除表时只删元数据。

主要原因是:内部表数据会移动到数据仓库目录中。

 

9:mapReduce实现基本SQL操作 (主要是明确如何确定key,value) 

(1)join实现原理:在map阶段将两个关联的表按照关联键拆成key和value,在shuffe阶段把key值相同组合在一组,最后reduce将value值合并。

 

红色的标示tag,表示那个表

A 表                          

uid name                          key    value                                   key    value                                   name   orderid

1    apple                          1       <1,apple>                             1      <1,apple>                             apple   1002

2    orange                        2       <1,oranger>                         1      <2,1002>                              apple   1003

                   ---> map                                      --->shuffle        1      <2,1003>    --->reduece

 B表                                  

uid orderid                       key     value                                   key     value                                name    orderid 

1     1001                         1        <2,1001>                              2       <1,oranger>                      oranger   1003

1     1002                         1        <2,1002>                              2       <2,1003>

2     1003                         2        <2,1003>

 

(2)group by的实现原理:在map阶段按照分组的字段拆成key和value,在这时value值会按照key汇总,然后在shuffe阶段把key值相同的组合在一组,最后reduce再将value再次汇总。

 

city表

value  是count值

rank  isonline                   key      value                       key       value           rank     isonline     value

A       1            --->map   <A,1>    2        ---> shuffle   <A,1>     2                 A             1             3

A       1                                                                        <A,1>     1

 

rank isoneline                  key      value                        key       value           rank     isonline     value

A      1             --->map    <A,1>    1        --->shuffle     <B,0>     1                B             0             1

B      0                              <B,0>    1

 

10:sql转为mapreduce的过程:客户端执行sql,driver会找到对应的元数据,driver将sql语句交给编译器,编译器执行编译好的sql后,driver会将sql转为mapreduce任务交由hadoop集群来执行。

 

11: 什么情况下可以避免mapReduce

本地模式: 如select * from employee limit 10 在这种情况下,hive可以简单地读取employees对应的存储目录下的文件。

过滤条件只是分区字段

 

12: Hive的UDF函数

方式一:编写一个UDF,需要继承UDF类并实现evaluate()函数,在查询执行过程中,查询中对应的每个应用到这个函数的地方都会对这个类进行实例化。

对于每行输入都会调用到evaluate()函数,然后evaluate()处理后的值会返回给Hive

如果想在Hive中使用UDF,那么需要将对应的jar文件加入到类路径下,然后再创建一个Function

CREATE TEMPORARY FUNCTION ‘函数名' As ‘类名’ (是临时的,查询执行完,就不可以再使用了)

 

 方式二:不变的UDF函数

通过注册的方式:将函数增加到hive内置函数中

registerUDF("方法名","Calss"); // 注册函数方法

 

13: Hive结合zookeeper(实现了高度可靠的分布式协调功能),支持锁功能

 

14: Hive和Oozie整合 (Oozie是一个工作流引擎服务器,将工作流的状态和发起任务的客户端分离开)

Oozie通过workflow.xml文件配置Action任务,可以将多个Action串起来

 

 

15: hive -f mail.sql >> mail.csv

 

LOAD DATA local INFILE 'D://dev_code//mail.csv' into table fact_repertory_alarm_mail FIELDS TERMINATED by '\t'

 

 

 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics