Hive介绍

本文详细介绍Facebook开发的大数据分析框架Hive,解释其如何解决大量员工熟悉SQL但不熟悉MapReduce编程的问题。Hive作为分析框架,不存储业务数据,而是处理存储在HDFS中的数据,通过提供SQL查询(HQL)并将其转换为MapReduce程序,由YARN调度执行。文章还探讨了Hive的元数据存储、建表方式、优缺点及适用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Hive介绍:

  1. facebook开发的,用于分析海量数据使用。为了解决公司内部好多员工熟悉SQL,但是不熟悉编写程序(mapreduce是通过编写代码实现的)
  2. 是一个分析框架,不是数据存储框架,本身不存储业务的数据。Hive处理的数据存放在HDFS中。
  3. 提供SQL查询(HQL),SQL形式跟MYSQL的基本一样。
  4. 执行HQL后转化成mapreduce的程序,在后台提交给YARN,由YARN分配资源跑mapreduce。
  5. 将SQL语言中常用的操作(SELCT, WHERE, GROUP 等)用mapreduce写成很多模板,所有的mapreduce模板存放在Hive中。
  6. 执行HQL以后通过hive框架匹配出相应的mapreduce模板,然后后台执行mapreduce代码统计出结果,然后返回客户端。
  7. 可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能。
  8. 元数据存储:Hive 将元数据存储在数据库中(通常是存储在关系数据库如 mysql , derby中)。Hive 中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。                                                     
  9. Hive建表后,表的元数据存储在关系型数据库中(如:mysql),表的数据(内容)存储在hdfs中,这些数据是以文本的形式存储在hdfs中(关系型数据库是以二进制形式存储的),既然是存储在hdfs上,那么这些数据本身也是有元数据的(在NameNode中),而数据在DataNode中。这里注意两个元数据的不同。
  10. 只需要在创建表的时候告诉 Hive 数据中的列分隔符和行分隔符,Hive 就可以解析数据。
  11. Hive就像是hadoop中的一个客户端工具。

优点:

  • 类似SQL语法,容易上手。
  • 不通写MR(mapreduce)了。
  • 执行延迟比较高(因为执行的时候他在后台启动MR程序,但是启动MR程序也是需要时间的,启动MR通常是比较慢的),对实时性要求不高的场合适用,用在离线分析场景。
  • 优势在于处理大数据,对于处理小数据没有优势。
  • 支持用户自定义函数。

缺点:

HQL表达能力有限(迭代式计算无法表达;数据挖掘方面不擅长)

执行效率低(hive自动生成MR作业,通常情况下不够智能化;hive调优比较困难,粒度较粗)

 

例子:

Hive创建一个表:

 hive> create external table if not exists pageview(
    > pageid int,
    > page_url string comment 'The page URL'
    > )
    > row format delimited fields terminated by ','
    > location 'hdfs://192.168.158.171:9000/user/hivewarehouse/';

 

知识链接:

https://www.cnblogs.com/ggzhangxiaochao/p/9363029.html

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值