大数据组件学习5 —— Hive(一)

Hive是基于Hadoop的数仓建设工具,严格意义上不算数据库,只是将HDFS中的数据映射成为一张表,本身并不存储数据,适合对历史数据做离线批处理分析。

本文主要梳理归纳了关于Hive优化方面的知识点

1. 存储与压缩优化

一般在map输出阶段,最终输出阶段对结果进行压缩,一般采用 ORC/Parquet + snappy方式

顺便小结 ORC与Parquet的区别:

ORC为列式存储结构

  • 由stripe组成,stripe相当于RowGroup(行组)的概念,每个Stripe包含 Index Data, Row Data, Stripe Footer.
  • ORC是自描述的,其元数据使用了Protocol Buffer进行了序列化.
  • 数据以二进制形式存储,不可直接读取 
  • ORC中使用了更加精确的索引信息,使得在读取数据时可以指定从任意一行开始读取 
  • ORC默认会对任何一块数据和索引信息使用ZLIB压缩,因此ORC文件占用的存储空间也更小

Parquet为列式存储结构

  • Parquet文件是以二进制方式存储的,是不可以直接读取和修改的,Parquet文件是自解析的,文件中包括该文件的数据和元数据 
  • Parquet中没有Map、Array这样的复杂数据结构,但是可以通过repeated和group组合来实现的 
  • Parquet支持嵌套的数据模型,类似于Protocol Buffers,每一个数据模型的schema包含多个字段,每一个字段有三个属性:重复次数、数据类型和字段名

2. 使用分区表,分桶表

  • 分桶表可以有效应对 大表join大表 的场景,将<k2, v2>中的key与桶数量取模,余数就是该kv所处的桶编号
  • 分区表的每一个分区都对应表下的一个目录,所有的分区的数据都存储在对应的目录中

3. 参数优化

  • JVM重用
  • 并行执行
  • Fetch模式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值