(10)Hive的相关概念——文件格式和数据压缩

news2024/11/26 9:29:36

目录

一、文件格式

1.1 列式存储和行式存储

1.1.1 行存储的特点

1.1.2 列存储的特点

1.2 TextFile

1.3 SequenceFile

1.4  Parquet

1.5 ORC

二、数据压缩 

2.1 数据压缩-概述

 2.1.1 压缩的优点

 2.1.2 压缩的缺点

2.2 Hive中压缩配置

2.2.1 开启Map输出阶段压缩(MR 引擎)

2.2.2 开启Reduce输出阶段压缩

2.3 Hive中压缩测试

一、文件格式

     Hive数据存储的本质还是HDFS,所有的数据读写都基于HDFS的文件来实现。为了提高对HDFS文件读写的性能,Hive提供了多种文件存储格式:TextFile、SequenceFile、ORC、Parquet等。不同的文件存储格式具有不同的存储特点,有的可以降低存储空间(列式存储),有的可以提高查询性能(行式存储)。Hive的文件格式在建表时指定,默认是TextFile

1.1 列式存储和行式存储

1.1.1 行存储的特点

    查询满足条件的一整行数据的时候,行存储只需要找到其中一个值,其余的值都在相邻地方,所以此时行存储查询的速度更快。

1.1.2 列存储的特点

    每个字段的数据类型一定是相同的,列式存储可以针对性的设计更好的设计压缩算法。TextFileSequenceFile的存储格式都是基于行存储的,ORC和Parquet是基于列式存储的。

1.2 TextFile

     TextFile是Hive中默认的文件格式,也是最常见的数据文件格式,存储形式为按行存储。Hive设计时考虑到为了避免各种编码及数据错乱的问题,选用了TextFile作为默认的格式。建表时不指定存储格式即为TextFile,导入数据时把数据文件拷贝至HDFS不进行处理。

1.3 SequenceFile

    SequenceFile是Hadoop里用来存储序列化的键值对,即二进制的一种文件格式。SequenceFile文件也可以作为MapReduce作业的输入和输出,hive也支持这种格式。

--sequencefile表
create table tb_sogou_seq(
    stime string,
    userid string,
    keyword string,
    clickorder string,
    url string
)
row format delimited fields terminated by '\t'
stored as sequencefile;

insert into table tb_sogou_seq
select * from tb_sogou_source;  -- tb_sogou_source表 是txt文件格式

   下图是插入原始txt文件(tb_sogou_source)大概有1.07G1260万条数据存储成SequenceFile的文件大小。 

1.4  Parquet

       Parquet是一种支持嵌套结构的列式存储文件格式。作为大数据系统中OLAP查询的优化方案,它已经被多种查询引擎原生支持,并且部分高性能引擎将其作为默认的文件存储格式。

--Parquet格式
create table tb_sogou_parquet(
    stime string,
    userid string,
    keyword string,
    clickorder string,
    url string
)
row format delimited fields terminated by '\t'
stored as parquet;

insert into table tb_sogou_parquet
select * from tb_sogou_source; -- tb_sogou_source表 是txt文件格式

 下面图示是插入原始txt文件(tb_sogou_source)大概有1.07G1260万条数据存储成Parquet的文件大小。

1.5 ORC

    ORC(OptimizedRC File)文件格式也是一种Hadoop生态圈中的列式存储格式;它最初产生自Apache Hive,用于降低Hadoop数据存储空间和加速Hive查询速度。

--ORC格式
create table tb_sogou_orc(
    stime string,
    userid string,
    keyword string,
    clickorder string,
    url string
)
row format delimited fields terminated by '\t'
stored as orc;

insert into table tb_sogou_orc
select * from tb_sogou_source;

 下面图示是插入原始txt文件(tb_sogou_source)大概有1.07G1260万条数据存储成ORC的文件大小。

二、数据压缩 

2.1 数据压缩-概述

     Hive压缩实际上说的就是MapReduce的压缩。Hive底层运行MapReduce程序时,磁盘I/O操作、网络数据传输、shuffle(清洗)和merge(合并)要花大量的时间,尤其是数据规模很大和工作负载密集的情况下。鉴于磁盘I/O和网络带宽是Hadoop的宝贵资源,数据压缩对于节省资源、最小化磁盘I/O和网络传输非常有帮助。MR 支持的压缩算法如下

 2.1.1 压缩的优点

  • 减小文件存储所占空间
  • 加快文件传输效率,从而提高系统的处理速度
  • 降低IO读写的次数

 2.1.2 压缩的缺点

  • 使用数据时需要先对文件解压,加重CPU负荷,压缩算法越复杂,解压时间越长
  • Hive中的压缩就是使用了Hadoop中的压缩实现的,所以Hadoop中支持的压缩在Hive中都可以直接使用。

2.2 Hive中压缩配置

2.2.1 开启Map输出阶段压缩(MR 引擎)

    开启map输出阶段的压缩可以减少mapReduce task间数据传输量。具体参数有:

--开启hive中间传输数据压缩功能
set hive.exec.compress.intermediate=true;
--开启mapreduce中map输出端的压缩功能
set mapreduce.map.output.compress=true;
--设置mapreduce中map输出端的数据的压缩方式
set mapreduce.map.output.compress.codec = org.apache.hadoop.io.compress.SnappyCodec;

2.2.2 开启Reduce输出阶段压缩

    当 Hive将执行结果写入到表中时,输出内容同样可以进行压缩。其余参数如下:

#当Hive将输出内容写入到表中时,输出内容同样可以进行压缩。属性hive.exec.compress.output控制着这个功能
--开启hive执行结果的输出压缩功能
set hive.exec.compress.output=true;

---开启mapreduce最终输出数据压缩
set mapreduce.output.fileoutputformat.compress=true;

---设置mapreduce最终数据输出压缩方式
set mapreduce.output.fileoutputformat.compress.codec = org.apache.hadoop.io.compress.SnappyCodec;

---设置mapreduce最终数据输出压缩为块压缩
set mapreduce.output.fileoutputformat.compress.type=BLOCK;

2.3 Hive中压缩测试

  • textfile格式snappy压缩
--创建表,指定为textfile格式,并使用snappy压缩
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 textfile 
tblproperties("orc.compress"="SNAPPY");
  • orc格式snappy压缩
--创建表,指定为orc格式,并使用snappy压缩
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");
  • orc格式不使用压缩
--创建表,指定为orc格式,并使用snappy压缩
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"="NONE");

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1451237.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

threejs之使用shader实现雷达扫描

varying vec2 vUv; uniform vec3 uColor; uniform float uTime;mat2 rotate2d(float _angle){return mat2(cos(_angle),-sin(_angle),sin(_angle),cos(_angle)); }void main(){vec2 newUv rotate2d(uTime*6.18)*(vUv-0.5);float angle atan(newUv.x,newUv.y);// 根据uv坐标获…

那些杠鸿蒙的现在怎么样了?

别杠,要杠就是你对。 一个纯血鸿蒙就已经打了那些杠精的嘴,以前是套壳Android,大家纷纷喷鸿蒙。现在鸿蒙已经全栈自研,并且已经展开各大企业生态合作。不管什么独立系统,都是一定要走一遍套壳Android的道路的&#xf…

幻兽帕鲁云服务器搭建零基础教程,新手小白一看就会

以下教程基于阿里云服务器ECS 来搭建幻兽帕鲁游戏服务器,通过一键部署的方式,最快1分钟即可完成部署。 阿里云一键部署幻兽帕鲁的活动地址:1分钟畅玩!一键部署幻兽帕鲁联机服务器 首先,打开阿里云的这个游戏服务器活…

laravel_进程门面_简单介绍

文章目录 Facade是什么?Facade能干什么Facade有哪些方法?怎么使用Facade呢?详细的代码解释Symfony Process是什么?介绍Symfony总结 Facade是什么? 在 Laravel 框架中,Facade 是一种设计模式。 它提供了一…

Javaweb基础-会话

会话: 会话管理:Cookie和Session配合解决 cookie是在客户端保留少量数据的技术,主要通过响应头向客户端响应一些客户端要保留的信息 session是在服务端保留更多数据的技术,主要通过HttpSession对象保存一些和客户端相关的信息 cookie和session配合记录…

奇异递归模板模式应用3-克隆对象

需求&#xff1a;希望某些类提供拷贝自身对象的功能&#xff0c;实现如下 template <typename T> class A { public:T *clone() {return new T(static_cast<T &>(*this));}private:friend T;A() default; };class B : public A<B> { public:B(int valu…

基于Java (spring-boot)和微信小程序的奶茶点餐小程序

一、项目介绍 基于Java (spring-boot)和微信小程序的奶茶点餐小程序功能&#xff1a;客户端登录、个人中心、点餐、选规格、去结算、取餐、我的信息、管理员登录、管理员首页、用户管理、商品管理、商品编辑、商品种类、订单管理、订单处理、等等等。 适用人群&#xff1a;适合…

全网首发 vsol光猫v2802rh光猫配置及IPTV组播教程

写在前面&#xff0c;首先感谢恩山的前辈们&#xff01;在农村老家没有10GPON但是GPON线路可以完成最高2.5G带宽&#xff0c;因此在重庆联通的基础上&#xff0c;配合V2802RH出这个教程&#xff08;图片都是一样我直接借用网上展示一下光猫后台&#xff09;。 提前准备一个VSO…

Unity 2D Spine 外发光实现思路

Unity 2D Spine 外发光实现思路 前言 对于3D骨骼&#xff0c;要做外发光可以之间通过向法线方向延申来实现。 但是对于2D骨骼&#xff0c;各顶点的法线没有向3D骨骼那样拥有垂直于面的特性&#xff0c;那我们如何做2D骨骼的外发光效果呢&#xff1f; 理论基础 我们要知道&a…

蒙特卡罗模拟 python Monte Carlo Simulation

1. 蒙特卡罗模拟 与普通预测模型不同&#xff0c;蒙特卡罗模拟根据估计值范围与一组固定输入值来预测一组结果。换句话说&#xff0c;蒙特卡洛模拟通过利用概率分布&#xff08;例如均匀分布或正态分布&#xff09;&#xff0c;为任何具有固有不确定性的变量构建可能结果的模型…

leetcode hot 100最小花费爬楼梯

本题和之前的爬楼梯类似&#xff0c;但是需要考虑到花费的问题&#xff01;**注意&#xff0c;只有在爬的时候&#xff0c;才花费体力&#xff01;**那么&#xff0c;我们还是按照动态规划的五部曲来思考。 首先我们要确定dp数组的含义&#xff0c;那么就是我们爬到第i层所花费…

基于蓄电池和飞轮混合储能系统的SIMULINK建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 4.1 蓄电池储能原理 4.2 飞轮储能原理 4.3 混合储能系统原理 5.完整工程文件 1.课题概述 基于蓄电池和飞轮混合储能系统的SIMULINK建模与仿真。蓄电池和飞轮混合储能&#xff0c;蓄电池可以用SIMULINK…

【C++】类和对象(五)友元、内部类、匿名对象

前言&#xff1a;前面我们说到类和对象是一个十分漫长的荆棘地&#xff0c;今天我们将走到终点&#xff0c;也就是说我们对于&#xff23;算是正式的入门了。 &#x1f496; 博主CSDN主页:卫卫卫的个人主页 &#x1f49e; &#x1f449; 专栏分类:高质量&#xff23;学习 &…

C++入门篇(5)——类和对象(2)

目录 1.类的6个默认成员函数 2.构造函数 2.2 概念 2.3 特性 3.析构函数 3.1 概念 3.2 特性 1.类的6个默认成员函数 如果一个类一个成员都没有&#xff0c;那么这个类就是空类。但空类并非什么都没有&#xff0c;编译器会对任何一个类都生成六个默认成员函数。 2.构造…

安装 Windows Server 2003

1.镜像安装 镜像安装:Windows Server 2003 2.安装过程(直接以图的形式呈现) 按Enter(继续),继续后F8继续 直接Enter安装 下一步 秘钥:GM34K-RCRKY-CRY4R-TMCMW-DMDHM 等待安装成功即可

FreeRTOS 延迟中断处理

采用二值信号量同步 二值信号量可以在某个特殊的中断发生时&#xff0c;让任务解除阻塞&#xff0c;相当于让任务与中断 同步。这样就可以让中断事件处理量大的工作在同步任务中完成&#xff0c;中断服务例程(ISR) 中只是快速处理少部份工作。如此&#xff0c;中断处理可以说是…

实现MainActivity转到其他界面的功能实现

#安卓 实现MainActivity转到其他界面的功能实现 实现步骤&#xff1a; 1.添加两个界面及&#xff1b;layout&#xff0c;分别为fullsreen和dialog 2.mainifest中注册两个antivity 3.向Mainactivity中代码。用intent简单的跳转 package com.example.myapplication;import an…

《数电》理论笔记-第3章-常用组合逻辑电路及MSI组合电路模块的应用

一&#xff0c;编码器和译码器 1&#xff0c;编码器 编码:用由0和1组成的代码表示不同的事物。 编码器:实现编码功能的电路&#xff0c; 常见编码器:普通编码器、优先编码器、二进制编码器二-十进制编码器等等 1.1 三位二进制普通编码器和三位二进制优先编码器 1分58秒开始 …

第五节 zookeeper集群与分布式锁_2

1.分布式锁概述 1.1 什么是分布式锁 1&#xff09;要介绍分布式锁&#xff0c;首先要提到与分布式锁相对应的是线程锁。 线程锁&#xff1a;主要用来给方法、代码块加锁。当某个方法或代码使用锁&#xff0c;在同一时刻仅有一个线程执行该方法或该代码段。 线程锁只在同一J…

Swift Combine 级联多个 UI 更新,包括网络请求 从入门到精通十六

Combine 系列 Swift Combine 从入门到精通一Swift Combine 发布者订阅者操作者 从入门到精通二Swift Combine 管道 从入门到精通三Swift Combine 发布者publisher的生命周期 从入门到精通四Swift Combine 操作符operations和Subjects发布者的生命周期 从入门到精通五Swift Com…