ORC 和 Parquet 都是 Hadoop 生态系统中流行的开源列文件存储格式,在效率和速度方面非常相似,最重要的是,它们旨在加快大数据分析工作负载。使用 ORC 文件与处理 Parquet 文件一样简单,因为它们提供了高效的读写功能,比基于行的对应文件更高效。两者都有其优缺点,很难找出哪一个比另一个更好。让我们更好地看看它们。我们先从 ORC 开始,然后转到 Parquet。

ORC

ORC (Optimized Row Columnar),是专为 Hadoop 工作负载设计的免费开源列存储格式。正如名称所暗示的,ORC 是一种自我描述的优化文件格式,它将数据存储到列中,使用户能够只读取和解压缩所需的片段。它是传统记录列文件 (RCFile) 格式的继承者,旨在克服其他 Hive 文件格式的限制。访问数据的时间大大缩短,数据大小也减小到 75%。ORC 提供了一种更高效、更好的方法来存储数据,以通过使用 Tez 的 SQL on-Hadoop 解决方案(如 Hive)进行访问。

ORC 与其他 Hive 文件格式相比具有许多优势,例如高数据压缩、更快的性能、预测性向下推的功能,以及更多,存储的数据被组织成条带,从而实现从 HDFS 进行大量、高效的读取。

Parquet

Parquet 是 Cloudera 与 Twitter 合作支持的 Hadoop 生态系统中另一种面向开源列的文件格式。Parquet 在大数据从业者中非常受欢迎,因为它提供了大量的存储优化,尤其是在分析工作负载中。与 ORC 一样,Parquet 还提供列压缩,可节省大量存储空间,同时允许您读取单个列,而不是读取完整的文件。

与传统存储解决方案相比,它在性能和存储要求方面提供了显著优势。它更高效地执行数据 IO 样式操作,并且在支持复杂的嵌套数据结构方面非常灵活。事实上,它特别设计,牢记嵌套数据结构。

Parquet 也是一种更好的文件格式,用于降低存储成本,并加快大量数据集的读取步骤。Parquet与Spark配合得很好。事实上,它是用于在 Spark 中写入和读取数据的默认文件格式。

ORC 和Parquet的区别

起源
• ORC 的灵感来自 Facebook 开发的row columnar format,该格式支持列读取、预测下拉和惰性读取。它是传统记录列文件 (RCFile) 格式的继承者,提供比 RCFile 更高效地存储关系数据的方法,将数据大小减小高达 75%。

Parquet的灵感来自谷歌Dremel论文中概述的嵌套数据存储格式,该格式由 Cloudera 与 Twitter 合作开发。

支持
• ORC 和 Parquet 都是流行的面向列的大数据文件格式,它们共享的设计几乎相似,因为两者都在列中共享数据。Parquet 对 Hadoop 生态系统中的大多数项目拥有更广泛的支持,但 ORC 仅支持 HivePig。两者之间的一个关键区别是,ORC更好地优化了Hive,而Parquet与Spark配合的更好。事实上,Parquet 是用于在 Apache Spark 中写入和读取数据的默认文件格式。

索引
• 使用 ORC 文件就像处理 Parquet 文件一样简单。两者都非常适合读取量大的工作负载。但是,ORC 文件被组织成数据条,数据条是数据的基本构建基块,彼此独立。每个条带都有索引、行数据和页脚。页脚是缓存条带内每列(如计数、最小值、最大值和总数)的关键统计信息的地方。

  • Parquet 将数据存储在页面中,每个页面都包含标头信息、有关定义级别和重复级别的信息以及实际数据。

在这里插入图片描述

总结

  • ORC 和 Parquet 都是 Hadoop 生态系统中最流行的两种面向列的文件存储格式,旨在很好地处理数据分析工作负载。
  • Parquet 由 Cloudera 和 Twitter 共同开发,用于存储具有高列的大型数据集的问题。
  • ORC 是传统 RCFile 规范的后续产品,存储在 ORC 文件格式中的数据被组织成条带,这些条带高度优化了 HDFS 读取操作。
  • 如果您在 Hadoop 生态系统中使用多种工具,则 Parquet 在适应性方面是一个更好的选择。
  • Parquet更好地优化了与Spark的使用,而 ORC 则针对Hive进行了优化。但在大多数情况下,两者非常相似,两者之间没有显著差异。

参考

Difference Between ORC and Parquet Difference Between | Difference Between

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐