当前位置: 首页 > 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
  • 《用数据讲故事》作者Cole N. Knaflic:消除一切无效的图表
  • Android Studio:GIT提交项目到远程仓库
  • ECMAScript 6 学习之路 ( 四 ) String 字符串扩展
  • javascript面向对象之创建对象
  • Laravel 中的一个后期静态绑定
  • ng6--错误信息小结(持续更新)
  • Python十分钟制作属于你自己的个性logo
  • 创建一种深思熟虑的文化
  • 大型网站性能监测、分析与优化常见问题QA
  • 分布式熔断降级平台aegis
  • 基于webpack 的 vue 多页架构
  • 区块链分支循环
  • 人脸识别最新开发经验demo
  • 使用Tinker来调试Laravel应用程序的数据以及使用Tinker一些总结
  • 我这样减少了26.5M Java内存!
  • 一个项目push到多个远程Git仓库
  • 移动端解决方案学习记录
  • C# - 为值类型重定义相等性
  • Unity3D - 异步加载游戏场景与异步加载游戏资源进度条 ...
  • 资深实践篇 | 基于Kubernetes 1.61的Kubernetes Scheduler 调度详解 ...
  • # 数据结构
  • #ubuntu# #git# repository git config --global --add safe.directory
  • #鸿蒙生态创新中心#揭幕仪式在深圳湾科技生态园举行
  • (02)vite环境变量配置
  • (java版)排序算法----【冒泡,选择,插入,希尔,快速排序,归并排序,基数排序】超详细~~
  • (windows2012共享文件夹和防火墙设置
  • (编程语言界的丐帮 C#).NET MD5 HASH 哈希 加密 与JAVA 互通
  • (论文阅读23/100)Hierarchical Convolutional Features for Visual Tracking
  • (十八)三元表达式和列表解析
  • (四)搭建容器云管理平台笔记—安装ETCD(不使用证书)
  • (一)eclipse Dynamic web project 工程目录以及文件路径问题
  • (转) Android中ViewStub组件使用
  • .equal()和==的区别 怎样判断字符串为空问题: Illegal invoke-super to void nio.file.AccessDeniedException
  • .naturalWidth 和naturalHeight属性,
  • .NET Core日志内容详解,详解不同日志级别的区别和有关日志记录的实用工具和第三方库详解与示例
  • .net 后台导出excel ,word
  • .Net程序帮助文档制作
  • .NET多线程执行函数
  • .NET教程 - 字符串 编码 正则表达式(String Encoding Regular Express)
  • // an array of int