hive数据存储格式
1、Hive存储数据的格式如下:
存储数据格式 | 存储形式 |
TEXTFILE | 行式存储 |
SEQUENCEFILE | 行式存储 |
ORC | 列式存储 |
PARQUET | 列式存储 |
2、行式存储和列式存储![](https://img-blog.csdnimg.cn/abcbc9f36f0544aca0aa1a388dcb4aab.png)
解释:
1、上图左面为逻辑表;右面第一个为行式存储,第二个温列式存储;
2、行存储的特点: 查询满足条件的一整行数据的时候,行存储只需要找到其中一个值,其余的值都在相邻地方。列存储则需要去每个聚集的字段找到对应的每个列的值,所以此时行存储查询的速度更快。
3、列存储的特点: 因为每个字段的数据聚集存储,在查询只需要少数几个字段的时候,能大大减少读取的数据量;每个字段的数据类型一定是相同的,列式存储可以针对性的设计更好的设计压缩算法。
行式存储优点:
1、相关的数据保存在一起,比较符合面向对象的思维,因为一行数据就是一条记录
2、方便进行insert或update操作
行式存储缺点:
1、如果仅需要查询几列数据,它会把整行数据都读取出来,不能跳过不必要的列读取
2、由于每一行中列的数据类型不一致,导致不容易获得一个极高的压缩比(空间利用率不高)
列式存储优点:
1、查询时,只有涉及到的列才会被查询,可以跳过不必要的列查询
2、高效的压缩率,不仅节省储存空间也节省计算内存和CPU
3、任何列都可以作为索引
列式存储缺点:
1、不适合进行insert或update操作
2、不适合扫描小量的数据
3、存储格式详解:
TEXTFILE格式
默认格式,数据不做压缩,磁盘开销大,数据解析开销大。可结合Gzip、Bzip2使用(系统自动检查,执行查询时自动解压),但使用这种方式,hive不会对数据进行切分,从而无法对数据进行并行操作。
ORC格式
Orc (Optimized Row Columnar)是hive 0.11版里引入的新的存储格式。
可以看到每个Orc文件由1个或多个stripe组成,每个stripe250MB大小,这个Stripe实际相当于RowGroup概念,不过大小由4MB->250MB,这样能提升顺序读的吞吐率。每个Stripe里有三部分组成,分别是Index Data,Row Data,Stripe Footer:
一个ORC文件可以分为若干个Stripe,一个stripe可以分为三个部分:
Index Data:一个轻量级的index,默认是每隔1W行做一个索引(目录)。这里做的索引只是记录某行的各字段在Row Data中的offset
Row Data:存储具体的数据,先取部分行,然后对这些行按列进行存储。对每个列进行了编码,分成多个Stream来存储。
Strip Footer:存储各个stripe的元数据信息
每个ORC文件文件有一个File Footer,存储的是每个Stripe的行数以及Stripe中每个Column的数据类型信息等;
每个ORC文件文件的尾部是一个Post Script,这里面记录了整个文件的压缩类型以及File Footer的长度信息等。
在读取文件时,会seek到文件尾部读Post Script,从里面解析到File Footer长度,再读FileFooter,从里面解析到各个Stripe信息,再读各个Stripe,即从后往前读。
parquet
面向分析型业务的列式存储格式,由Twitter和Cloudera合作开发,2015年5月从Apache的孵化器里毕业成为Apache顶级项目
parquet文件是以二进制方式存储的,所以是不可以直接读取。文件中包括该文件的数据和元数据,因此Parquet格式文件是自解析的
通常情况下,在存储Parquet数据的时候会按照Block大小设置行组的大小,由于一般情况下每一个Mapper任务处理数据的最小单位是一个Block,这样可以把每一个行组由一个Mapper任务处理,增大任务执行并行度。
ORC和Parquet区别
- ORC存储格式比Parquet压缩率更好
- Parquet格式对嵌套列的支持比较友好,可以只查询某个列中的嵌套子列,而不用查询其他的子列。
- ORC支持ACID事务,而Parquet目前还不支持。
问题:
1、Zlib和Snappy两种压缩算法的对比?
Zlib 压缩率 高, 解压速度 慢
Snappy则与Zlib相反,按照业务情况来选择使用
2、什么是压缩率?
压缩率(Compression rate),描述压缩文件的效果名,是文件压缩后的大小与压缩前的大小之比,例如:把100m的文件压缩后是90m,压缩率为90/100*100%=90%,压缩率一般是越小越好,但是压得越小,解压时间越长。
3、什么是解压速度?
解压速度是指将一个通过软件压缩的文件释放到目标地址,恢复为压缩前文件的速度。
相关文章:
![](https://img-blog.csdnimg.cn/ae1829a6f92e44529ebfcb90c745b4d5.png)
hive数据存储格式
1、Hive存储数据的格式如下: 存储数据格式存储形式TEXTFILE行式存储SEQUENCEFILE行式存储ORC列式存储PARQUET列式存储 2、行式存储和列式存储 解释: 1、上图左面为逻辑表;右面第一个为行式存储,第二个温列式存储; …...
![](https://img-blog.csdnimg.cn/8a9153d0a4f0479e8c2a4a0ded748f97.png)
mysql数据库备份与恢复
mysql数据备份: 数据备份方式 物理备份: 冷备:.冷备份指在数据库关闭后,进行备份,适用于所有模式的数据库热备:一般用于保证服务正常不间断运行,用两台机器作为服务机器,一台用于实际数据库操作应用,另外…...
![](https://www.ngui.cc/images/no-images.jpg)
《NFL橄榄球》:辛辛那提猛虎·橄榄1号位
辛辛那提猛虎(英语:Cincinnati Bengals),又译辛辛那提孟加拉虎,是一支职业美式橄榄球球队位于俄亥俄州辛辛那提。他们现时为美联北区的其中一支球队,他们在1968年加入美国橄榄球联合会,并在1970…...
![](https://img-blog.csdnimg.cn/0443e10eacc74fe59e75f7d3b680b642.png)
2、线程、块和网格
目录一、线程、块、网格概念二、代码分析2.1 打印第一个线程块的第一线程2.2 打印当前线程块的当前线程2.3 获取当前是第几个线程一、线程、块、网格概念 CUDA的软件架构由网格(Grid)、线程块(Block)和线程(Thread&am…...
![](https://img-blog.csdnimg.cn/img_convert/ec5e452bc2052dcfd3c6fd559494988a.png)
C++ 算法主题系列之贪心算法的贪心之术
1. 前言 贪心算法是一种常见算法。是以人性之念的算法,面对众多选择时,总是趋利而行。 因贪心算法以眼前利益为先,故总能保证当前的选择是最好的,但无法时时保证最终的选择是最好的。当然,在局部利益最大化的同时&am…...
![](https://img-blog.csdnimg.cn/img_convert/c54763d0928b6d70c85a1569af1df41b.png)
请注意,PDF正在传播恶意软件
据Bleeping Computer消息,安全研究人员发现了一种新型的恶意软件传播活动,攻击者通过使用PDF附件夹带恶意的Word文档,从而使用户感染恶意软件。 类似的恶意软件传播方式在以往可不多见。在大多数人的印象中,电子邮件是夹带加载了恶…...
![](https://img-blog.csdnimg.cn/291bf7c56dd2458f8f686bb122e3cd95.png)
【Kubernetes】【二】环境搭建 环境初始化
本章节主要介绍如何搭建kubernetes的集群环境 环境规划 集群类型 kubernetes集群大体上分为两类:一主多从和多主多从。 一主多从:一台Master节点和多台Node节点,搭建简单,但是有单机故障风险,适合用于测试环境多主…...
![](https://www.ngui.cc/images/no-images.jpg)
Python:每日一题之发现环(DFS)
题目描述 小明的实验室有 N 台电脑,编号 1⋯N。原本这 N 台电脑之间有 N−1 条数据链接相连,恰好构成一个树形网络。在树形网络上,任意两台电脑之间有唯一的路径相连。 不过在最近一次维护网络时,管理员误操作使得某两台电脑之间…...
![](https://img-blog.csdnimg.cn/ba151284b53442b1a7b668a13a3d2cb2.png)
C++设计模式(14)——享元模式
亦称: 缓存、Cache、Flyweight 意图 享元模式是一种结构型设计模式, 它摒弃了在每个对象中保存所有数据的方式, 通过共享多个对象所共有的相同状态, 让你能在有限的内存容量中载入更多对象。 问题 假如你希望在长时间工作后放…...
![](https://www.ngui.cc/images/no-images.jpg)
SpringCloud之Eureka客户端服务启动报Cannot execute request on any known server解决
项目场景: 在练习SpringCloud时,Eureka客户端(client)出现报错:Cannot execute request on any known server 问题描述 正常启动SpringCloud的Server端和Client端,结果发现Server端的控制台有个Error提示,如下&#…...
![](https://img-blog.csdnimg.cn/4432500f82534636a2cc3cc9b12f4c24.gif#pic_center)
从零开始搭建kubernetes集群环境(虚拟机/kubeadm方式)
文章目录1 Kubernetes简介(k8s)2 安装实战2.1 主机安装并初始化2.2 安装docker2.3 安装Kubernetes组件2.4 准备集群镜像2.5 集群初始化2.6 安装flannel网络插件3 部署nginx 测试3.1 创建一个nginx服务3.2 暴漏端口3.3 查看服务3.4 测试服务1 Kubernetes简…...
![](https://img-blog.csdnimg.cn/92722005f1464062884b7a21cbb97c2d.png)
【零基础入门前端系列】—表格(五)
【零基础入门前端系列】—表格(五) 一、表格 表格在数据展示方面非常简单,并且表现优秀,通过与CSS的结合,可以让数据变得更加美观和整齐。 单元格的特点:同行等高、同列等宽。 表格的基本语法࿱…...
![](https://img-blog.csdnimg.cn/img_convert/cce9708874fa306e98b669b8959d8f4d.png)
C#开发的OpenRA的只读字典IReadOnlyDictionary实现
C#开发的OpenRA的只读字典IReadOnlyDictionary实现 怎么样实现一个只读字典? 这是一个高级的实现方式,一般情况下,开发人员不会考虑这个问题的。 毕竟代码里,只要小心地使用,还是不会出问题的。 但是如果在一个大型的代码,或者要求比较严格的代码里,就需要考虑这个问题了…...
![](https://www.ngui.cc/images/no-images.jpg)
mulesoft MCIA 破釜沉舟备考 2023.02.14.06
mulesoft MCIA 破釜沉舟备考 2023.02.14.06 1. A company is planning to extend its Mule APIs to the Europe region.2. A mule application is deployed to a Single Cloudhub worker and the public URL appears in Runtime Manager as the APP URL.3. An API implementati…...
![](https://img-blog.csdnimg.cn/02430444e7374f5f9ed8e52020bfb683.png)
Python网络爬虫 学习笔记(1)requests库爬虫
文章目录Requests库网络爬虫requests.get()的基本使用框架requests.get()的带异常处理使用框架(重点)requests库的其他方法和HTTP协议(非重点)requests.get()的可选参数网络爬虫引发的问题(非重点)常见问题…...
![](https://img-blog.csdnimg.cn/21a2bc6ff9804a0fb3dbe5fc3de8f93a.png#pic_center)
Splay
前言 Splay是一种维护平衡二叉树的算法。虽然它常数大,而且比较难打,但Splay十分方便,而且LCT需要用到。 约定 cnticnt_icnti:节点iii的个数 valival_ivali:节点iii的权值 sizisiz_isizi:节点iii的子…...
![](https://img-blog.csdnimg.cn/78dfef7302f24d358ab000c7bf46898c.png)
智能网联汽车ASIL安全等级如何划分
目录一、功能安全标准二、功能安全等级定义三、危险事件的确定四、ASIL安全等级五、危险分析和风险评定六、功能安全目标的分解一、功能安全标准 ISO 26262《道路车辆功能安全》脱胎于IEC 61508《电气/电子/可编程电子安全系统的功能安全》,主要定位在汽车行业&…...
![](https://img-blog.csdnimg.cn/f391fa4f832d48b39fe4657b6a273985.png)
Stable Diffusion 1 - 初始跑通 文字生成图片
文章目录关于 Stable DiffusionLexica代码实现安装依赖库登陆 huggingface查看 huggingface token下载模型计算生成设置宽高测试迭代次数生成多列图片关于 Stable Diffusion A latent text-to-image diffusion model Stable Diffusion 是一个文本到图像的潜在扩散模型ÿ…...
![](https://img-blog.csdnimg.cn/26b570c3c0c24ef4b125de170dd20526.png)
【cuda入门系列】通过代码真实打印线程ID
【cuda入门系列】通过代码真实打印线程ID1.gridDim(6,1),blockDim(4,1)2.gridDim(3,2),blockDim(2,2)【cuda入门系列之参加CUDA线上训练营】在Jetson nano本地跑 hello cuda! 【cuda入门系列之参加CUDA线上训练营】一文认识cuda基本概念 【cuda入门系列之参加CUDA线…...
![](https://www.ngui.cc/images/no-images.jpg)
【Python语言基础】——Python NumPy 数据类型
Python语言基础——Python NumPy 数据类型 文章目录 Python语言基础——Python NumPy 数据类型一、Python NumPy 数据类型一、Python NumPy 数据类型 Python 中的数据类型 默认情况下,Python 拥有以下数据类型: strings - 用于表示文本数据,文本用引号引起来。例如 “ABCD”…...
![](https://img-blog.csdnimg.cn/c476d2effdde45e58a1a89cdd9128393.png)
数据工程师需要具备哪些技能?
成为数据工程师需要具备哪些技能?数据工程工作存在于各个行业,在银行业、医疗保健业、大型科技企业、初创企业和其他行业找到工作机会。许多职位描述要求数据工程师、拥有数学或工程学位,但如果有合适的经验学位往往没那么重要。 大数据开发…...
![](https://img-blog.csdnimg.cn/18fa4b84f2824e10af307e57bf29a9da.png)
Cosmos 基础 -- Ignite CLI(二)Module basics: Blog
一、快速入门 Ignite CLI version: v0.26.1 在本教程中,我们将使用一个模块创建一个区块链,该模块允许我们从区块链中写入和读取数据。这个模块将实现创建和阅读博客文章的功能,类似于博客应用程序。最终用户将能够提交新的博客文章&#x…...
![](https://img-blog.csdnimg.cn/85e5986e22f14056ad4ad28f8be28e8e.png)
Quartz 快速入门案例,看这一篇就够了
前言 Quartz 是基于 Java 实现的任务调度框架,对任务的创建、修改、删除、触发以及监控这些操作直接提供了 api,这意味着开发人员拥有最大的操作权,也带来了更高的灵活性。 什么是任务调度? 任务调度指在将来某个特定的时间、固…...
![](https://img-blog.csdnimg.cn/img_convert/1399d85f1acb78a2d20629f25c6f6194.png)
图解LeetCode——1233. 删除子文件夹(难道:中等)
一、题目 你是一位系统管理员,手里有一份文件夹列表 folder,你的任务是要删除该列表中的所有 子文件夹,并以 任意顺序 返回剩下的文件夹。 如果文件夹 folder[i] 位于另一个文件夹 folder[j] 下,那么 folder[i] 就是 folder[j] …...
![](https://img-blog.csdnimg.cn/74708d4f426940b285647fe21b9d7c80.png)
Doris--简单使用
一、数据表的创建与数据导入 1.1、创建表 1.1.1、单分区 CREATE TABLE table1 (siteid INT DEFAULT 10,citycode SMALLINT,username VARCHAR(32) DEFAULT ,pv BIGINT SUM DEFAULT 0 -- 聚合模型, value column 使用sum聚合 ) AGGREGATE KEY(siteid, citycode, …...
![](https://img-blog.csdnimg.cn/777c07e1422c4b98b3e37682085036ac.png)
使用GPT让你的RStudio如虎添翼
API的的调用目前来说不限制地区,但是OpenAI的API的申请限制了地区。运行的时候,如果出现了429,意味着你被限流了,需要等一会才行。 前提是,你需要注册一个OpenAI的账户,然后在https://openai.com/api/ 里申…...
![](https://www.ngui.cc/images/no-images.jpg)
Python 算法交易实验45 再探量化
说明 去年大部分精力都在构建底层架构和工具了,一直都没有时间搞量化。目前底层的数据库服务(ADB)和清洗(衍生 AETL) 工具已经好了,我想尽快的把量化启动起来。 内容 1 思想 作为交易来说,只有买卖。通过数据分析与模型,我们获得的增强点是决策。在合适的时候进行买卖的…...
![](https://www.ngui.cc/images/no-images.jpg)
Dubbo加载配置文件方式,加载流程,加载配置文件源码解析
配置方法 API配置 以Java编码的方式组织配置,Dubbo3配置API详解 :https://dubbo.apache.org/zh/docs3-v2/java-sdk/reference-manual/config/api/#bootstrap-api public static void main(String[] args) throws IOException {ServiceConfig<Greet…...
![](https://img-blog.csdnimg.cn/d7484d1892d941f09be5b0f69d8756fc.webp)
十大开源测试工具和框架,一定有你需要的
目录 前言 Katalon Studio Selenium Appium JMeter SOAP UI Robot Framework Watir JUnit Robotium Citrus 总结 前言 免费的开源框架和工具由于其开源特性,现在逐渐成为自动化测试的首选解决方案。区别在于,你是喜欢使用类库编写一个全新的…...
![](https://www.ngui.cc/images/no-images.jpg)
加密技术在android中的应用
1、算法基础 算法基础参照linux的全盘加密与文件系统加密在android中的应用 消息摘要算法 对称加密算法 非对称加密算法...
![](/images/no-images.jpg)
修改数据库密码 进不了网站后台/知乎关键词优化软件
Android NDK( Native Developer Kit )是个工具集,它提供一套方法,使Android应用程序(Java程序)可以内嵌native(C,C)程序。Android应用程序(Java程序)运行于Dalvik虚拟机中。NDK允许应用程序的一部分使用native语言(C,C)来实现。这对很多程序都是有帮助的…...
![](https://img-blog.csdnimg.cn/img_convert/fc6d676855784d135adafb67bc0ba434.png)
wordpress paypal插件/站长工具seo综合查询怎么关闭
我的开发环境是Win8VS2013,数据库环境是MySQL(WampServer)1、下载MySQL Connector/Net 6.8.3地址:http://dev.mysql.com/downloads/connector/net/还需要下载一个MySQL for VisualStudio版本,用于在VS中可以在数据源中引用MySQL地址…...
![](https://img-blog.csdnimg.cn/img_convert/4fe2f8cdcebbd34f1db3cbf41ec87254.png)
企业怎么做网站建设/google安卓手机下载
在这个系列的***部分里,我们创建了一个电子商务网站,呈示了三类URL:我们通过创建象下面这样一个ProductsController类来处理这些URL:在把上面这个类加到我们的应用中后,asp.net mvc框架就会把进来的URL自动导向到我们的控制器上的…...
![](https://img-blog.csdnimg.cn/img_convert/614d1a4a9e461cbcf1efb43c298f6a00.png)
wordpress 视频课堂/湖南专业的关键词优化
一、Config配置简介在微服务系统中,服务较多,相同的配置:如数据库信息、缓存、参数等,会出现在不同的服务上,如果一个配置发生变化,需要修改很多的服务配置。spring cloud提供配置中心,来解决这…...
网站代码 输入文字 跳出内容/平面设计培训
前段时间在网上看到了一篇滴答词典的项目文章,实现简单的单词查找、整句翻译和生词本功能,但是该项目年代久远,所用的API已不再提供数据,我决定利用它的已有框架实现其功能,主要用到的技术有GSON和Volley以及SQLite相关…...
![](/images/no-images.jpg)
建设网站容易吗/百度一下你就知道百度一下
找出数组中和为某个数的两个数的序号 思路:和为k等价与k-ab,建立字典,遍历每个元素ai 如果k-ai不存在字典中就记下ai的位置i来,到下一个数如果k-ajai在字典中,那么结果就是(i,j) class Solution:def call(self, nums, …...