当前位置: 首页 > news >正文

2023.11.17 -hivesql调优,数据压缩,数据存储

目录

1.hive命令和参数配置

2.hive数据压缩

3.hive数据存储

0.原文件大小  18.1MB

1.textfile行存储格式, 压缩后size:18MB

2.行存储格式:squencefile ,压缩后大小8.89MB​

3. 列存储格式 orc - ZILIB ,压缩后大小2.78MB

 4.列存储格式  orc-snappy  ,压缩后大小3.75MB

5.列存储格式之parquets ,压缩后大小13.09MB 

 4.在linux中查看文件大小的命令


1.hive命令和参数配置


hive参数设置范围 : 配置文件参数 >   命令行参数  >   set参数声明

hive参数设置优先级: set参数声明  >   命令行参数   >  配置文件参数

注意: 一般执行SQL需要指定的参数, 都是通过 set参数声明 方式进行配置,因为它属于当前会话的临时设置,断开后就失效了

 2.hive数据压缩

==Hive底层是运行MapReduce,所以Hive支持什么压缩格式本质上取决于MapReduce。==

在后续可能会使用GZ(GZIP), 保证压缩后的数据更小, 同时压缩和解压的速度比较OK的,

但是大部分的选择主要会选择另一种压缩方案, snappy, 此种方案可以保证在合理的压缩比下, 拥有更高的解压缩的速度

snappy | A fast compressor/decompressor On a single core of a Core i7 processor in 64-bit mode, Snappy compresses at about 250 MB/sec or more and decompresses at about 500 MB/sec or more.

 

开启压缩

create database hive6;
use hive6;
-- 开启压缩(map阶段或者reduce阶段)
--开启hive支持中间结果的压缩方案
set hive.exec.compress.intermediate; -- 查看默认
set hive.exec.compress.intermediate=true ;
--开启hive支持最终结果压缩
set hive.exec.compress.output; -- 查看默认
set hive.exec.compress.output=true;--开启MR的map端压缩操作
set mapreduce.map.output.compress; -- 查看默认
set mapreduce.map.output.compress=true;
--设置mapper端压缩的方案
set mapreduce.map.output.compress.codec; -- 查看默认
set mapreduce.map.output.compress.codec= org.apache.hadoop.io.compress.SnappyCodec;-- 开启MR的reduce端的压缩方案
set mapreduce.output.fileoutputformat.compress; -- 查看默认
set mapreduce.output.fileoutputformat.compress=true;
-- 设置reduce端压缩的方案
set mapreduce.output.fileoutputformat.compress.codec; -- 查看默认
set mapreduce.output.fileoutputformat.compress.codec = org.apache.hadoop.io.compress.SnappyCodec;
--设置reduce的压缩类型
set mapreduce.output.fileoutputformat.compress.type; -- 查看默认
set mapreduce.output.fileoutputformat.compress.type=BLOCK;

3.hive数据存储

行存储的特点: 查询满足条件的一整行数据的时候,列存储则需要去每个聚集的字段找到对应的每个列的值,行存储只需要找到其中一个值,其余的值都在相邻地方,所以此时行存储查询的速度更快。
列存储的特点: 因为每个字段的数据聚集存储,在查询只需要少数几个字段的时候,能大大减少读取的数据量;每个字段的数据类型一定是相同的,列式存储可以针对性的设计更好的设计压缩算法。

行存储: textfile和squencefile
    优点: 每行数据连续存储              select * from 表名; 查询行,全表速度相对较快
    缺点: 每列类型不一致,空间利用率不高   select 列名 from 表名; 查询速度相对较慢


列存储: orc(zlib,snappy)和parquet
    优点: 每列数据连续存储         select 列名 from 表名;  查询列的速度相对较快,

因为类型都是一样,所以利于压缩和存储,空间利用率高


    缺点: 因为每行数据不是连续存储  select * from 表名;查询速度相对较慢
    
注意: ORC文件格式的数据, 默认内置一种压缩算法:zlib , 在实际生产中一般会将ORC压缩算法替换为 snappy使用,格式为: STORED AS orc tblproperties ("orc.compress"="SNAPPY") 

0.原文件大小  18.1MB

 

1.textfile行存储格式, 压缩后size:18MB

--存储压缩比
-- 存储格式应用对比
-- 演示textfile行存储格式: 18.1 m
create table log_text (track_time string,url string,session_id string,referer string,ip string,end_user_id string,city_id string
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
STORED AS TEXTFILE ; -- TEXTFILE当前默认的,可以省略-- 查询数据
select * from log_text;

压缩后size:18MB ,原封不动

 2.行存储格式:squencefile ,压缩后大小8.89MB

 压缩后大小8.89MB


create table log_text_sequen (track_time string,url string,session_id string,referer string,ip string,end_user_id string,city_id string
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
STORED AS sequencefile ;
-- 加载数据(先上传数据文件到根目录)
insert into table log_text_sequen  select * from log_text;
-- 查询数据
select * from log_text_sequen ;

3. 列存储格式 orc - ZILIB ,压缩后大小2.78MB

/*ORC文件格式的数据, 默认内置一种压缩算法:ZLIB , 在实际生产中一般会将ORC压缩算法替换为 snappy
格式为: STORED AS orc tblproperties ("orc.compress"="SNAPPY") */

create table log_orc_zlib(
track_time string,
url string,
session_id string,
referer string,
ip string,
end_user_id string,
city_id string
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
STORED AS orc ;-- 默认内置一种压缩算法:ZLIB-- 加载数据(先上传数据文件到根目录,可以)
insert into table log_orc_zlib select * from log_text; --24s 726ms size 2.78MB
--回到HDFS中查看,原来18MB的文件,在算法压缩后,变成2.78MB,压缩后在hdfs中查看是乱码
-- 查询数据
select * from log_orc_zlib;

压缩后大小2.78MB 

 4.列存储格式  orc-snappy  ,压缩后大小3.75MB

/*ORC文件格式的数据, 默认内置一种压缩算法:ZLIB , 在实际生产中一般会将ORC压缩算法替换为 snappy
格式为: STORED AS orc tblproperties ("orc.compress"="SNAPPY") */

-- [重点orc配合snappy]
-- 演示orc列存储(指定snappy): 3.75 m
create table log_orc_snappy(track_time string,url string,session_id string,referer string,ip string,end_user_id string,city_id string
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
STORED AS orc tblproperties ("orc.compress"="SNAPPY"); -- 配合SNAPPY压缩-- 加载数据(先上传数据文件到根目录)
insert into table log_orc_snappy select * from log_text;
-- 查询数据
select * from log_orc_snappy;

5.列存储格式之parquets ,压缩后大小13.09MB 

-- 演示parquet压缩存储:13.09 m
create table log_parquet(
track_time string,
url string,
session_id string,
referer string,
ip string,
end_user_id string,
city_id string
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
STORED AS PARQUET ;-- 加载数据(先上传数据文件到根目录)
insert into table log_parquet select * from log_text;
-- 查询数据
select * from log_parquet;

压缩后大小13.9MB 

 4.在linux中查看文件大小的命令

查看文件大小的hdfs dfs -du -h '路径';

[root@node1 ~]# hdfs dfs -du -h '/user/hive/warehouse/hive6.db/log_text/log.data' ;
18.1 M  54.4 M  /user/hive/warehouse/hive6.db/log_text/log.data
 

[root@node1 ~]# hdfs dfs -du -h '/user/hive/warehouse/hive6.db/log_orc_zlib/000000_0';
2.8 M  8.3 M  /user/hive/warehouse/hive6.db/log_orc_zlib/000000_0
 

相关文章:

  • 【图像分类】【深度学习】【Pytorch版本】ResNet模型算法详解
  • asp.net core mvc之 RAZOR共享指令和标签助手 TagHelpers
  • vivado产生报告阅读分析6-时序报告2
  • python+Django 使用apscheduler实现定时任务 管理调度
  • C#委托与事件
  • Azure 机器学习:使用 Azure 机器学习 CLI、SDK 和 REST API 训练模型
  • git 指定时间代码统计
  • 【EI会议征稿】第四届环境资源与能源工程国际学术会议(ICEREE 2024)
  • kotlin--2.面向对象
  • 无线WiFi安全渗透与攻防(N.1)WPA渗透-pyrit:batch-table加速attack_db模块加速_“attack_db”模块加速
  • U盘不能访问不一定是坏了,可能还有其他原因!U盘无法访问修复详解
  • Python爬虫批量下载图片
  • 监控直流防雷浪涌保护器综合方案
  • 软考 系统架构设计师系列知识点之云计算(3)
  • 商城免费搭建之java商城 java电子商务Spring Cloud+Spring Boot+mybatis+MQ+VR全景+b2b2c
  • 【399天】跃迁之路——程序员高效学习方法论探索系列(实验阶段156-2018.03.11)...
  • Android优雅地处理按钮重复点击
  • conda常用的命令
  • const let
  • Docker下部署自己的LNMP工作环境
  • ECS应用管理最佳实践
  • JavaScript的使用你知道几种?(上)
  • JavaScript学习总结——原型
  • Netty 4.1 源代码学习:线程模型
  • nfs客户端进程变D,延伸linux的lock
  • PHP面试之三:MySQL数据库
  • Quartz初级教程
  • 解析带emoji和链接的聊天系统消息
  • 前端面试之闭包
  • 入口文件开始,分析Vue源码实现
  • 十年未变!安全,谁之责?(下)
  • 用简单代码看卷积组块发展
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • 《天龙八部3D》Unity技术方案揭秘
  • #AngularJS#$sce.trustAsResourceUrl
  • #Linux(make工具和makefile文件以及makefile语法)
  • #绘制圆心_R语言——绘制一个诚意满满的圆 祝你2021圆圆满满
  • (CPU/GPU)粒子继承贴图颜色发射
  • (delphi11最新学习资料) Object Pascal 学习笔记---第13章第6节 (嵌套的Finally代码块)
  • (react踩过的坑)antd 如何同时获取一个select 的value和 label值
  • (二十五)admin-boot项目之集成消息队列Rabbitmq
  • (分布式缓存)Redis分片集群
  • (附源码)ssm基于web技术的医务志愿者管理系统 毕业设计 100910
  • (附源码)计算机毕业设计大学生兼职系统
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理第3章 信息系统治理(一)
  • (七)微服务分布式云架构spring cloud - common-service 项目构建过程
  • (原)本想说脏话,奈何已放下
  • (原創) 系統分析和系統設計有什麼差別? (OO)
  • .Net - 类的介绍
  • .Net MVC4 上传大文件,并保存表单
  • .net 写了一个支持重试、熔断和超时策略的 HttpClient 实例池
  • .NET设计模式(2):单件模式(Singleton Pattern)
  • .py文件应该怎样打开?
  • .vollhavhelp-V-XXXXXXXX勒索病毒的最新威胁:如何恢复您的数据?
  • .vue文件怎么使用_vue调试工具vue-devtools的安装