Parquet 整体说明
- Parquet(Apache Parquet)是一种列式存储的二进制文件格式,专为大数据处理场景设计,具有高效压缩和编码特性
- Parquet 尤其适合分析型工作负载,能显著提升查询速度并降低存储成本
Parquet 文件结构
- Parquet文件由多个行组(Row Groups)组成,每个行组包含:
- 列块(Column Chunks) :存储实际列数据
- 元数据 :记录统计信息(如min/max),用于加速查询
Parquet 文件读取示例
- Spark :
df.write.parquet("path")/spark.read.parquet("path") - Pandas :
pd.read_parquet("file.parquet", engine="pyarrow") - Hive :
CREATE TABLE ... STORED AS PARQUET
附录:文件读取和分析示例
- 使用 Python 代码读取并解析文件格式
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34import pandas as pd
def read_and_inspect_parquet(file_path):
try:
# 读取Parquet文件
df = pd.read_parquet(file_path)
print("成功读取Parquet文件!")
print("\n===== 数据基本信息 =====")
df.info() # 显示数据框的基本信息,包括列名、数据类型、非空值数量等
for col in df.columns:
print("col:", col)
print(df[col][0])
print("\n===== 前5行数据 =====")
print(df.head()) # 显示前5行数据,查看数据格式
print("\n===== 数据统计信息 =====")
print(df.describe()) # 显示数值型列的统计信息
return df
except FileNotFoundError:
print(f"错误: 找不到文件 '{file_path}'")
except Exception as e:
print(f"读取Parquet文件时发生错误: {str(e)}")
return None
if __name__ == "__main__":
parquet_file_path = "./gsm8k/test.parquet"
# 读取并查看Parquet文件
dataframe = read_and_inspect_parquet(parquet_file_path)
附录:列式存储 vs 行式存储
- 行式存储(如CSV、JSON):按行存储数据,适合整行读取的场景(如单条记录查询)
- 列式存储(如Parquet):按列存储数据,适合只读取部分列或聚合分析的场景(如计算某列的平均值)