趋近智
您已经了解了存储数据的不同位置,例如数据库、数据仓库和数据湖。但是,数据在这些存储系统中是如何实际组织起来的呢?您选择的格式可以极大地影响数据存储、读取、处理和分析的便捷性。接下来,我们来查看一些作为数据工程师会经常遇到的常见数据格式。
想象一个简单的电子表格。CSV文件基本就是这样。它是表格数据最直接且被广泛认可的格式之一。
结构: 文件中的每一行通常表示一行数据。在每行中,值(字段)由逗号分隔。第一行通常包含标题行,定义列的名称。
示例:
UserID,Name,City,SignUpDate
101,Alice,New York,2023-01-15
102,Bob,London,2023-02-10
103,Charlie,New York,2023-03-20
优点:
缺点:
101是数字还是文本?)。这种模糊性可能在处理过程中导致问题。使用场景: 从数据库导出数据、共享简单数据集、初始数据加载步骤。
JSON起源于JavaScript,但已成为Web上数据交换的通用标准。它特别适合表示无法整齐地放入简单行和列的数据。
结构: JSON使用人工可读的文本来传输数据对象,这些对象由属性-值对和数组数据类型组成。它使用花括号{}表示对象(键值对的集合,其中键是字符串,值可以是字符串、数字、布尔值、数组或其他对象),使用方括号[]表示数组(有序的值列表)。
示例:
[
{
"UserID": 101,
"Name": "Alice",
"City": "New York",
"SignUpDate": "2023-01-15",
"Preferences": {
"Theme": "Dark",
"Notifications": ["Email", "SMS"]
}
},
{
"UserID": 102,
"Name": "Bob",
"City": "London",
"SignUpDate": "2023-02-10",
"Preferences": {
"Theme": "Light",
"Notifications": ["Email"]
}
}
]
优点:
缺点:
使用场景: API响应、配置文件、在NoSQL数据库(如MongoDB)中存储文档类数据。
Apache Parquet完全是另一种类型。它是一种列式存储格式,针对效率和性能进行了优化,尤其是在大数据生态系统中。与CSV和JSON不同,它并非旨在直接供人阅读。
结构: Parquet不是逐行存储数据(像CSV和JSON那样),而是逐列存储数据。'UserID'列的所有值存储在一起,'Name'列的所有值存储在一起,依此类推。它还将模式(数据类型、列名)嵌入到文件本身中。
为什么是列式? 假设您只需要分析一个包含许多列的大型数据集中的“城市”列。
行式存储与列式存储的数据布局比较。
优点:
缺点:
使用场景: 数据湖中数据存储的标准格式(通常存储在Amazon S3或Google Cloud Storage等对象存储中)、为数据仓库提供数据以及使用Apache Spark等框架进行高效处理。
没有单一的“最佳”格式;选择取决于您的具体需求:
了解这些常见格式非常重要,因为作为数据工程师,您将不断地使用这些格式的数据,从源中提取、转换并加载到各种存储系统中。选择和使用合适的格式是构建高效数据管道的根本部分。
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造