当前位置: 首页 > 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
 

http://www.lryc.cn/news/232921.html

相关文章:

  • 基于Vue+SpringBoot的大学计算机课程管理平台 开源项目
  • 2.c++基础语法
  • applicationContext.getBean 为null
  • 无线WiFi安全渗透与攻防(六)之WEP破解-Gerix-wifi-cracker自动化破解WEP加密
  • 华为OD机试 - 环中最长子串(Java JS Python C)
  • bug-跨域访问问题
  • Babyk勒索病毒数据集恢复,计算机服务器中了babyk勒索病毒怎么办?
  • (.htaccess文件特性)[MRCTF2020]你传你呢 1
  • 微软Ignite 2023大盘点:GPT-4 Turbo、DALL-E 3等
  • 应用架构的演进 I 使用无服务器保证数据一致性
  • jupyter修改默认打开目录
  • HTML5学习系列之标题和正文、描述性信息
  • 互联网医院系统:数字化时代中医疗服务的未来
  • (C语言)输入一个序列,判断是否为奇偶交叉数
  • 蓝桥杯模拟赛:最远滑行距离 ← dfs
  • 广东电信手机号余额查询接口
  • 这次轮到微软炸场了;5000+AI工具调研报告 (500万字);狂打一星开喷AI聊天机器人;CMU LLM课程;AI创业的方向与时机 | ShowMeAI日报
  • --max-old-space-size=8192报错
  • 单区域OSPF配置
  • VsCode 安装 GitHub Copilot插件 (最新)
  • 人工智能基础_机器学习039_sigmoid函数_逻辑回归_逻辑斯蒂回归_分类神器_代码实现逻辑回归图---人工智能工作笔记0079
  • 购买阿里云服务器需要多少钱?活动价3000元-5000元的阿里云服务器汇总
  • CentOS修改root用户密码
  • Android消息机制(Handler、Looper、MessageQueue)
  • Pikachu漏洞练习平台之XXE(XML外部实体注入)
  • ubuntu中/etc/rc.local和/etc/init.d/rc.local的区别是什么
  • vue项目中 commonJS转es6
  • 【C++】AVL树(动图详解)
  • 「Verilog学习笔记」用3-8译码器实现全减器
  • rocketmq: MQClientException: No route info of this topic