Hive--介绍及功能

1、介绍

痛点:

  • 数据分析师不懂Java开发
  • 开发人员不懂业务
    tips:最早大数据领域只有Hadoop这个分布式存储和计算的组件用于大数据的处理:数据分析
  • FaceBook公司在使用Hadoop实现数据分析的时候,发现有个毛病:会做分析的人如业务人员、数据分析师,会用SQL;会用Hadoop实现分布式开发是开发人员

解决:

  • 方案一:让开发人员教业务写代码,成本比较高
  • 方案二:让开发人员对Hadoop做一层封装,开发一个新的程序,封装以后新的程序提供SQL接口,在新的程序中用SQL进行开发,这个程序底层自动将SQL转为MapReduce程序提交给YARN去运行。最早的Hive就诞生了
    在这里插入图片描述

Hive的本质:

  • 对Hadoop做了封装,提供了SQL来操作Hadoop
    • 实现基于HDFS的分布式存储
    • 实现基于MR和YARN的分布式计算
    • 是一种特殊的Hadoop的客户端,最终的计算和存储还是由Hadoop来完成的,Hive实际上是一个翻译的角色,Hive的使用依赖于Hadoop

问题:Hive是不是分布式的?

  • Hive本身不是分布式
  • Hive可以实现分布式表结构的存储分布式的计算
  • 通过Hadoop来实现的

2、功能

  • 一:将HDFS文件映射成表中的数据
  • 二:将SQL解析为MapReduce程序

考虑问题1:如何能将一个SQL语句转换为一个MapReduce程序?

select 1 from 2 where 3 group by 4 having 5 order by 6 limit 7

针对一句sql:各位置的处理

  • Input:2,决定了程序处理的数据源
  • Map:1和3这个位置,分组之前的数据的过滤
  • Shuffle:4和6,实现分组和排序
  • Reduce:聚合函数和5、7,自定义的聚合逻辑和分组以后的过滤
  • Ouptut:保存结果
  • Hive的底层本质上就有一个MR的模板,通过对SQL进行解析,变成参数传递给底层的MR模板,提交运行

考虑问题2:SQL是对表进行处理,MR是对HDFS文件进行处理的?如何能实现这样的转换呢?

  • 总结Hive的功能
    • 第一:将HDFS上文件映射成表中的数据,通过SQL来处理表,就会处理对应HDFS文件
    • 第二:将SQL语句转换成MapReduce程序
    • SQL -》 表
    • MR -》 HDFS文件
  • 分析一下如何能实现上面的两大功能?

功能一:将HDFS上的文件映射成表?

  • 在我们使用Hive的过程中
  • 我们在Hive中创建一张表,让这张表关联HDFS的文件
  • 并且我们将这个关联的关系存储起来:Hive的元数据Hive 元数据:存储了Hive中每张表与HDFS文件之间的映射关系

功能二:将SQL转换为MapReduce程序呢?

  • 假设有一个文件
1       zhangsan        182       lisi            20
  • Hive中构建表
create  table info(
  id int,
  name string,
  age int,
  sex string
);
  • 实现文件与表的关联:将文件中的每一列与表的每一列关联
select id,name from info where id > 3 ;
  1. Input:读取要处理的表所对应的HDFS的数据根据Hive的元数据获取这张表对应的HDFS文件
  2. Map:根据你所指定的列名id,name计算出是这个文件哪些列
id:第一列
name:第二列
map方法中分割每一行只过滤这两列,判断id是否大于3,
如果id大于3保留
小于等于3就丢弃
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值