数据集最常见的数据格式包括 CSV、JSON 和 Parquet。每种格式都根据结构、使用场景和性能服务于不同的目的。CSV 广泛用于表格数据,JSON 用于分层或嵌套数据,而 Parquet 用于优化的分析工作负载。了解它们的优势和局限性有助于开发人员为项目选择合适的格式。
CSV(逗号分隔值)是一种用于表格数据的纯文本格式,其中每一行代表一条记录,列之间用逗号分隔。它易于读写,使其成为电子表格(如 Excel)和基本数据交换的默认选择。例如,从数据库导出用户数据通常会生成 CSV 文件。然而,CSV 缺乏对数据类型或模式的内置支持——除非经过显式解析,所有值都被视为字符串。这在处理日期、数字或缺失值时可能导致不一致。此外,CSV 对于大型数据集或嵌套数据结构效率不高,因为它即使在进行部分查询时也需要解析整个文件。
JSON(JavaScript 对象表示法)是一种轻量级、人类可读的格式,用于将结构化数据表示为键值对。它支持嵌套对象和数组,非常适合 API 和配置文件。例如,天气 API 可能会返回带有嵌套字段的 JSON,例如 {"location": {"city": "London"}, "temperature": 15}
。JSON 的灵活性使其能够处理复杂的层次结构,但这伴随一个缺点:冗余的键和括号会增加文件大小,并且解析大型 JSON 文件可能很慢。虽然 JSON 在 Web 开发中无处不在,但由于其二进制编码,Protocol Buffers 或 MessagePack 等替代方案在性能关键型应用中通常更优越。
Parquet 是一种列式存储格式,针对分析查询进行了优化。与逐行存储数据(如 CSV)不同,Parquet 按列对值进行分组,从而实现高效压缩和对特定字段的更快查询。例如,查询一个十亿行数据集中的单个列只需要读取该列的数据。Parquet 还支持模式演化,允许随时间添加或修改字段。然而,Parquet 文件是二进制格式且不可读,需要 Apache Spark 或 Pandas 等工具来处理。这使得 Parquet 不太适合小型应用,但在大数据管线中非常有效,因为在这些场景下,降低 I/O 和存储成本至关重要。