Hive基础

基于Hadoop的数据仓库解决方案

  • 将结构化的数据文件映射为数据库表

  • 提供类sql的查询语句HQL

  • hive让更多人使用Hadoop

Hive优势优点

  • 提供了一个简单的优化模型

  • HQL类SQL语法,简化MR开发

  • 支持在不同的计算框架上运行

  • 支持在HDFS和HBase上临时查询数据

  • 支持用户自定义函数、格式

  • 常用于ETL操作和Bl稳定可靠 (真实生产环境) 的批处理

  • 有庞大活跃的社区

Hive元数据管理

  • 记录数据仓库中模型的定义、各层级间的映射关系

  • 存储在关系数据库中

    • 默认Derby, 轻量级内嵌SQL数据库

      • Derby非常适合测试和演示

      • 存储在.metastore db目录中

    • 实际生产一般存储在MySQL中

      • 修改配置文件hive-site.xm

  • HCatalog

    • 将Hive元数据共享给其他应用程序

Hive分区(Partition)

  • 分区主要用于提高性能

    • 分区列的值将表划分为一个个的文件夹

    • 查询时语法使用"分区”列和常规列类似

    • 查询时Hive会只从指定分区查询数据,提高查询效率

  • 分为静态分区和动态分区

Hive视图 (View)

视图概述

  • 通过隐藏子查询、连接和函数来简化查询的逻辑结构

  • 只保存定义,不存储数据

  • 如果删除或更改基础表,则查询视图将失败

  • 视图是只读的,不能插入或装载数据

应用场景

  • 将特定的列提供给用户,保护数据隐私

  • 用于查询语句复杂的场景

Hive四种排序

order by 全局排序(reduce归结上排序)(建议使用limit)

sort by 分区内排序 (map上有序tasks 最后归结无序)

distribute by(自定义分区)+sort by

cluster by (distribute by和sort by相同时 整合排序 只能升序)

分桶和分区的区别

  1. 分桶和分区两者不干扰,可以把分区表进一步分桶

  2. 分桶对数据的处理比分区更加细粒度化: 分区针对的是数据的有储路径,分针对的是数据文件;

  3. 分桶是按照列的哈希函数进行分割的,相对比较平均,而分区是按照列的值来进行分割的,容易造成教据倾斜。

Hive优化

Hive还提供另外一个参数--表文件的大小作为开启和关闭MapJoin的闻值 1.旧版本为hive,mapjoin,smalltable.filesize 2.set hive.auto.convert.join.noconditionaltask.size=512000000

Hive集合操作

  • 所有子集数据必须具有相同的名称和类型

    • UNION ALL:合并后保留重复项

    • UNION: 合并后删除重复项 (v1.2之后)

  • 可以在顶层查询中使用 (0.13.0之后)

  • ORDER BY, SORT BY, CLUSTER BY, DISTRIBUTE BY LIMIT适用于合并后的整个结果

  • 集合其他操作可以使用JOIN/OUTER JOIN来实现

    • 差集、交集

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值