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

ORC与Parquet列式存储的区别

ORC与Parquet列式存储

      • 1、ORC与Parquet列式存储
      • 2、ORC与Parquet的区别




列式存储(Columnar Storage)是一种优化的数据存储方式,与传统的行式存储(Row Storage)相比,列式存储在数据压缩、查询性能、I/O效率等方面具有明显的优势

在大数据领域中,ORC(Optimized Row Columnar)和Parquet是两种流行的列式存储格式,它们在数据压缩、查询性能、存储效率等方面有着各自的特点和优势

1、ORC与Parquet列式存储


Apache ORC是一种自描述类型感知的列式文件格式,专为Hadoop工作负载而设计。它针对大型流式读取进行了优化,并集成了快速查找所需行的支持。以列式格式存储数据可让读取器仅读取、解压缩和处理当前查询所需的值。由于ORC文件具有类型感知能力,因此写入器会选择最适合该类型的编码并在写入文件时构建内部索引

谓词下推使用这些索引来确定需要为特定查询读取文件中的哪些条带,而行索引可以将搜索范围缩小到特定的10000行集合ORC支持Hive中的完整数据类型,包括复杂类型:Struct、List、Map和Union

ORC官网:https://orc.apache.org/

Apache Parquet是一种开源的列式数据文件格式,旨在实现高效的数据存储和检索。它提供高性能压缩和编码方案来批量处理复杂数据,并且受到许多编程语言和分析工具的支持

Parquet官网:https://parquet.apache.org/

2、ORC与Parquet的区别


以下是ORC与Parquet的区别与联系:

1)相同点

  • 基于Hadoop文件系统,属于线上格式,可以在节点间传递数据
  • 采用列式二进制存储结构
  • 采用高效的压缩
  • 文件可分割,具有较强的伸缩性和并行处理能力
  • 使用Schema进行自我描述
  • 降低存储成本,减少磁盘I/O成本

2)不同点

比较项ORCParquet
默认压缩ZLIB(压缩比较高)Snappy压缩(压缩比较低)
操作支持delete、update不支持delete、update
数据类型支持collection、array、map等复杂类型仅支持普通类型
谓词下推支持(减少磁盘I/O成本)不支持
事务支持ACID(原子性、隔离性、一致性、持久性),但仅限于分桶表不支持事务
兼容性Hive、PrestoImpala、Spark、Drill、Arrow
场景HiveSpark

两种列式存储格式都具有明显的优势。通过合理选择存储格式、压缩算法和查询优化技术,可以最大程度地提升数据处理和分析的效率,满足不同业务场景的需求



参考文章:https://zhuanlan.zhihu.com/p/257917645


相关文章:

ORC与Parquet列式存储的区别

ORC与Parquet列式存储 1、ORC与Parquet列式存储2、ORC与Parquet的区别 列式存储(Columnar Storage)是一种优化的数据存储方式,与传统的行式存储(Row Storage)相比,列式存储在数据压缩、查询性能、I/O效率等…...

析构函数和拷贝构造函数

文章目录 析构函数1.析构函数的定义:2.析构函数的语法:3.析构函数的特性: 拷贝构造函数1.拷贝构造函数的定义:2.拷贝构造函数的语法3.拷贝构造函数的特性(1)拷贝构造函数是构造函数的一个重载形式**(这个其实也很好理解&#xff0…...

sql server启动、连接 与 navicat连接sql server

一、sql server 启动 1.搜索cmd->以管理员身份运行 2.输入以下命令 net start mssqlserver 3.服务器启动成功 二、sql server连接 1.打开ssms,输入,连接 2.右键,属性 3.连接,勾选允许远程连接到此服务器 三、navicat连接sq…...

数据库测试数据准备厂商 Snaplet 宣布停止运营

上周刚获知「数据库调优厂商 OtterTune 宣布停止运营」。而今天下班前,同事又突然刷到另一家海外数据库工具商 Snaplet 也停止运营了。Snaplet 主要帮助开发团队在数据库中生成仿真度高且合规的测试数据。我们在年初还撰文介绍过它「告别手搓!Postgres 一…...

【Java09】方法(下)

1. 形参个数可变的方法 Java允许方法指定数量不确定的形参。如果在定义方法是,在最后一个形参的类型后加...,则表明该形参可以接受多个参数值。多个参数值作为数组传入: public class Varargs {public static void test(int a, String... b…...

d88888888

分析:v9999999999 vn输出n个n 先算出n的位数p 所以答案是nn*10的p次方n*10的2p次方.....n*10的(n-1)p次方 化简n*(10的0次方10的p次方10的2p次方.....10的(n-1)p次方) 后面为等比数列求和 …...

【MySQL备份】mysqldump基础篇

目录 1.简介 2.基本用途 3.命令格式 3.1常用选项 3.2常用命令 4.备份脚本 5.定时执行备份脚本 1.简介 mysqldump 是 MySQL 数据库管理系统的命令行实用程序,用于创建数据库的逻辑备份。它能够导出数据库的结构(如表结构、视图、触发器等&#xf…...

C# Halcon目标检测算法

在Halcon中进行目标检测可以使用传统的计算机视觉方法,也可以使用深度学习的方法。Halcon提供了丰富的函数库来处理这些任务,而在C#中使用Halcon,你需要通过Halcon .NET接口。 以下是使用Halcon进行目标检测的一般步骤,这里我将给…...

7.4总结

今天写了几道题目 最近,一年级学生马克西姆学习了科拉兹猜想,但他在讲课时没有太注意,所以他认为猜想中提到了以下过程: 有一个变量 $$$x$$$ 和一个常数 $$$y$$$ 。下面的操作要执行 $$$k$$$ 次: - 将 $$$x$$$ 增加…...

知识图谱查询语言的表示

文章目录 SPARQL知识图谱查询基本构成常见的SPARQL查询算子语义Markup表示语言SPARQL知识图谱查询基本构成 RDF 支持类似数据库的查询语言,叫作SPARQL,它提供了查询RDF 数据的标准语法、处理SPARQL查询的规则以及结果返回形式。 变量,RDF中的资源,以“?”或者“$”指示;…...

重生之我要学后端100--计算机网络部分概念(持续更新)

TCP/IP、DNS、负载均衡器等等 前言一、TCP/IP(传输控制协议/互联网协议)二、DNS(域名系统)三、负载均衡器其他网络概念 前言 了解网络基础知识对于后端开发者至关重要,因为这些知识有助于理解应用程序是如何在更广阔的…...

时空预测+特征分解!高性能!EMD-Transformer和Transformer多变量交通流量时空预测对比

时空预测特征分解!高性能!EMD-Transformer和Transformer多变量交通流量时空预测对比 目录 时空预测特征分解!高性能!EMD-Transformer和Transformer多变量交通流量时空预测对比效果一览基本介绍程序设计参考资料 效果一览 基本介绍…...

Vue 循环内部获取图片高度

在vue循环里面获取图片宽度或者高度,有时候会用到,则可以 <div classconmon v-for"(item, index) in items"><router-link :to"{path: /art/details,query:{artid:item.app_id,item_id:item.image_id}}"><img :src"item.src" al…...

vue动态组件与插件到底是什么?

background: yellow; } 子组件1 <ul><li v-for"item of items" :key"item"><input type"checkbox" />{{ item }}</li></ul>子组件2 PostMail 子组件3 RecycleBin ![在这里插入图片描述](https://img-blog.csdni…...

SwiftUI九创建watchOS应用

代码下载 这篇教程让可以应用之前所学到的SwiftUI知识&#xff0c;把Landmarks应用从iOS平台迁移到watchOS平台上。在拷贝可以共用的数据和视图文件之前&#xff0c;需要先给项目中添加一个对应watchOS的Target编译目标。在所有 assets 就绪后&#xff0c;将自定义SwiftUI视图…...

【Linux进阶】文件和目录的默认权限与隐藏权限

1.文件默认权限&#xff1a;umask OK&#xff0c;那么现在我们知道如何建立或是改变一个目录或文件的属性了&#xff0c;不过&#xff0c;你知道当你建立一个新的文件或目录时&#xff0c;它的默认权限会是什么吗&#xff1f; 呵呵&#xff0c;那就与umask这个玩意儿有关了&…...

SQL 查询中 (+) 符号的含义

您已经很好地解释了 SQL 查询中 () 符号的含义&#xff0c;它确实用于表示左外连接&#xff08;LEFT OUTER JOIN&#xff09;&#xff0c;这是 SQL 中的一种连接操作。以下是对您提供的信息的补充和完善&#xff1a; ### 左外连接&#xff08;LEFT OUTER JOIN&#xff09;&…...

基于Vue的MOBA类游戏攻略分享平台

你好呀&#xff0c;我是计算机学姐码农小野&#xff01;如果有相关需求&#xff0c;可以私信联系我。 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;Java技术、SpringBoot框架、B/S模式、Vue.js 工具&#xff1a;MyEclipse、MySQL 系统展示 首页 用…...

如何在PhpStorm中运行SQL文件?

如何在PhpStorm中运行SQL文件&#xff1f; 提问&#xff1a;如何在PhpStorm中运行SQL文件&#xff1f; 解答&#xff1a;本文将详细介绍如何在PhpStorm中运行SQL文件的步骤&#xff0c;包括如何配置数据库连接和执行SQL脚本&#xff0c;并附带示例SQL代码。 1. 配置数据库连…...

Qt实现检测软件是否多开

Qt实现检测软件是否多开 在桌面软件开发中&#xff0c;软件通常要设置只允许存在一个进程&#xff0c;像一些熟知的音乐软件&#xff0c;QQ音乐这种。而这些软件在限制只有一个进程的同时&#xff0c;通常还会有双击桌面图标唤醒已运行的后台进程的功能。关于双击桌面唤醒已运…...

web vue 项目 Docker化部署

Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段&#xff1a; 构建阶段&#xff08;Build Stage&#xff09;&#xff1a…...

基于Flask实现的医疗保险欺诈识别监测模型

基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施&#xff0c;由雇主和个人按一定比例缴纳保险费&#xff0c;建立社会医疗保险基金&#xff0c;支付雇员医疗费用的一种医疗保险制度&#xff0c; 它是促进社会文明和进步的…...

稳定币的深度剖析与展望

一、引言 在当今数字化浪潮席卷全球的时代&#xff0c;加密货币作为一种新兴的金融现象&#xff0c;正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而&#xff0c;加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下&#xff0c;稳定…...

docker 部署发现spring.profiles.active 问题

报错&#xff1a; org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...

在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?

uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件&#xff0c;用于在原生应用中加载 HTML 页面&#xff1a; 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...

服务器--宝塔命令

一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行&#xff01; sudo su - 1. CentOS 系统&#xff1a; yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...

LRU 缓存机制详解与实现(Java版) + 力扣解决

&#x1f4cc; LRU 缓存机制详解与实现&#xff08;Java版&#xff09; 一、&#x1f4d6; 问题背景 在日常开发中&#xff0c;我们经常会使用 缓存&#xff08;Cache&#xff09; 来提升性能。但由于内存有限&#xff0c;缓存不可能无限增长&#xff0c;于是需要策略决定&am…...

uniapp 字符包含的相关方法

在uniapp中&#xff0c;如果你想检查一个字符串是否包含另一个子字符串&#xff0c;你可以使用JavaScript中的includes()方法或者indexOf()方法。这两种方法都可以达到目的&#xff0c;但它们在处理方式和返回值上有所不同。 使用includes()方法 includes()方法用于判断一个字…...

AI语音助手的Python实现

引言 语音助手(如小爱同学、Siri)通过语音识别、自然语言处理(NLP)和语音合成技术,为用户提供直观、高效的交互体验。随着人工智能的普及,Python开发者可以利用开源库和AI模型,快速构建自定义语音助手。本文由浅入深,详细介绍如何使用Python开发AI语音助手,涵盖基础功…...

HybridVLA——让单一LLM同时具备扩散和自回归动作预测能力:训练时既扩散也回归,但推理时则扩散

前言 如上一篇文章《dexcap升级版之DexWild》中的前言部分所说&#xff0c;在叠衣服的过程中&#xff0c;我会带着团队对比各种模型、方法、策略&#xff0c;毕竟针对各个场景始终寻找更优的解决方案&#xff0c;是我个人和我司「七月在线」的职责之一 且个人认为&#xff0c…...