登 录
注 册
< 大 数 据
Flink
Hadoop
Spark
Hive
HBase
Kafka
其他框架
生产中常见问题
Hive压缩和存储
通过JDBC访问
企业级调优(一)
企业级调优(二)
企业级调优(三)
UDF实战
Hive调优参数大全
热门推荐>>>
中台架构
中台建设与架构
Hadoop
源码分析-NN启动(三)
HBase
HBased对接Hive
Linux
Nginx高可用
Python
数据导出工具
Flink
3分钟搭建Flink SQL测试环境
Kafka
Kafka对接Flume
深度学习
卷积神经网络
数据结构与算法
选择合适的算法
MySQL
数据备份恢复
计算机系统
信号量同步线程
其他框架
Azkaban Flow1.0与2.0
ClickHouse
表引擎-其他类型
技术成长
最好的职业建议
精选书单
技术成长书单—机器学习
技术资讯
数据在线:计算将成为公共服务
开发工具
IntelliJ IDEA 20年发展回顾(二)
系统工具
Mac命令行工具
虚拟化
内存虚拟化概述
云原生
云原生构建现代化应用
云服务
一文搞懂公有云、私有云...
Java
Spring Boot依赖注入与Runners
Go
Go函数与方法
SQL
SQL模板
安全常识
一文读懂SSO
当前位置:
首页
>>
Hive
>>
Hive压缩和存储
Hive压缩和存储
2020-07-05 10:26:10 星期日 阅读:1379
####Hive压缩比测试 存储格式:ORC 压缩算法:LZOP | 压缩前(GB) | 压缩后(MB) | 压缩比 | | ------------ | ------------ | ------------ | | 0.86 | 34 | 25.88 | | 3.47 | 138 | 25.75 | |6.52 | 146 | 45.7 | | 45.28 | 947 | 48.96 | | 27.46 | 827 | 34 | | 平均 | - | 34.90 | ####开启Map输出阶段压缩 开启Map输出阶段压缩可以减少job中map和reduce task间数据传输量 ``` # 开启hive中间传输数据压缩功能 hive> set hive.exec.compress.intermediate=true; # 开启MapReduce中map输出压缩功能 hive> set mapreduce.map.output.compress=true; # 设置MapReduce中map输出数据的压缩方式 hive> set mapreduce.map.output.compress.codec=org.apache.hadoop.io.compress.SnappyCodec; # 或者LZO压缩 hive> set mapreduce.map.output.compress.codec=org.apache.hadoop.io.compress.LzopCodec; ``` ####开启Reduce输出阶段压缩 默认情况下,hive输出的是非压缩的纯文本文件,hive支持输出内容可以进行压缩。 ``` # 开启hive最终输出数据压缩功能(开启此参数,才能开启map和reduce输出阶段的压缩) hive> set hive.exec.compress.output=true; # 开启MapReduce最终输出数据压缩 hive> set mapreduce.output.fileoutputformat.compress=true; # 设置MapReduce最终数据输出压缩方式 hive> set mapreduce.output.fileoutputformat.compress.codec=org.apache.hadoop.io.compress.SnappyCodec; # 或者LZO压缩方式 hive> set mapreduce.output.fileoutputformat.compress.codec=org.apache.hadoop.io.compress.LzopCodec; # 设置MapReduce最终数据输出压缩为块压缩(默认是行压缩RECORD,指定块压缩速度更快) hive> set mapreduce.output.fileoutputformat.compress.type=BLOCK; ``` ####文件存储格式 hive支持的输出格式主要有 - TEXTFILE SEQUENCEFILE ORC PARQUET ####行存储与列存储 #####行存储的特点: 查询满足条件的一行数据的时候,列存储需要去每个聚集的字段找到对应的每个列的值,行存储只需要找到其中一个值,其他的值都在相邻的地方,所以这种场景的查询,行存储比列存储的查询速度更快。 #####列存储的特点: 因为每个字段的数据聚集存储,如果在查询的时候只需要查询几个字段,能大大减少读取的数据量,每个字段的数据类型一定是相同的,列式存储可以针对性的设计更好的压缩算法。 TEXTFILE和SEQUENCEFILE的存储格式是基于行存储的,ORC和PARQUET是基于列式存储的。 ####创建表并指定压缩和存储格式 创建ORC格式的表并制定压缩格式为Snappy ``` CREATE TABLE orc_test( id int , name string ) ROW FORMAT DELIMITED FIELDS TERMINATED BY "01" STORED AS ORC TBLPROPERTIES("orc.compress"="SNAPPY") ```