CSV、Parquet 与 Arrow:存储格式解释

相同的数据,不同的格式,性能差异很大。

来源:KDnuggets

简介

Hugging Face Datasets 提供了使用单行代码加载数据集的最简单方法之一。 这些数据集通常以 CSV、Parquet 和 Arrow 等格式提供。 虽然这三种格式都是为存储表格数据而设计的,但它们在后端的操作不同。每种格式的选择决定了数据的存储方式、加载速度、需要多少存储空间以及数据类型的保存效率。随着数据集变得越来越大、模型越来越复杂,这些差异变得越来越显着。在本文中,我们将了解 Hugging Face 数据集如何与 CSV、Parquet 和 Arrow 配合使用,究竟是什么让它们在磁盘和内存中有所不同,以及每种数据集何时适合使用。那么,让我们开始吧。

1.CSV

CSV 代表逗号分隔值。它只是文本,每行一行,列用逗号(或制表符)分隔。几乎所有工具都可以打开它,即 Excel、Google Sheets、pandas、数据库等。它非常简单且可互操作。

示例:

姓名、年龄、城市

  • 坎瓦尔,30,纽约
  • 卡西姆,25,埃德蒙顿
  • Hugging Face 将其视为基于行的格式,这意味着它会逐行读取数据。虽然这对于小型数据集来说是可以接受的,但性能会随着扩展而恶化。此外,还有一些其他限制,例如:

    无显式模式:由于所有数据都以文本格式存储,因此每次加载文件时都需要推断类型。如果数据不一致,可能会导致错误。

    大尺寸和慢 I/O:文本存储会增加文件大小,并且从文本中解析数字会占用 CPU 资源。

  • 2. 实木复合地板姓名:坎瓦尔、卡西姆年龄:30、25城市:纽约、埃德蒙顿它还为每列添加元数据:类型、最小/最大值、空计数和压缩信息。这可以实现更快的读取、高效的存储和准确的类型处理。 Snappy 或 Gzip 等压缩算法进一步减少了磁盘空间。它具有以下优点:按列读取:仅加载您需要的列,加快查询速度。