数据存储——Parquet文件格式简单介绍


Parquet 整体说明

  • Parquet(Apache Parquet)是一种列式存储的二进制文件格式,专为大数据处理场景设计,具有高效压缩和编码特性
  • Parquet 尤其适合分析型工作负载,能显著提升查询速度并降低存储成本

Parquet 文件结构

  • Parquet文件由多个行组(Row Groups)组成,每个行组包含:
  • 列块(Column Chunks) :存储实际列数据
  • 元数据 :记录统计信息(如min/max),用于加速查询

Parquet 文件读取示例

  • Sparkdf.write.parquet("path") / spark.read.parquet("path")
  • Pandaspd.read_parquet("file.parquet", engine="pyarrow")
  • HiveCREATE 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
    34
    import 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):按列存储数据,适合只读取部分列或聚合分析的场景(如计算某列的平均值)