You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Azure Blobs读取Parquet文件到Pandas DataFrame并实现服务端列投影?

实现Azure Blob中Parquet文件的服务端列投影(仅下载所需列)

完全可以实现——借助Parquet的列式存储特性,配合Azure Blob的流式读取能力,你能在不下载完整文件的前提下,仅获取指定列的数据,大幅提升处理效率。

实现步骤(Python)

  1. 安装必要依赖
    需要用到操作Azure Blob的azure-storage-blob,以及高效解析Parquet的pyarrow:

    pip install azure-storage-blob pyarrow
    
  2. 核心代码实现
    通过连接字符串初始化Blob客户端,获取文件流后,直接指定需要的列进行读取:

    from azure.storage.blob import BlobServiceClient
    import pyarrow.parquet as pq
    import pandas as pd
    
    # 替换为你的实际配置
    CONNECTION_STRING = "your_azure_blob_connection_string"
    CONTAINER_NAME = "your_container_name"
    BLOB_NAME = "target_file.parquet"
    # 定义你需要的列
    WANTED_COLUMNS = ["user_id", "order_amount", "create_time"]
    
    # 初始化Blob客户端
    blob_service_client = BlobServiceClient.from_connection_string(CONNECTION_STRING)
    blob_client = blob_service_client.get_blob_client(container=CONTAINER_NAME, blob=BLOB_NAME)
    
    # 流式读取并仅加载指定列
    with blob_client.download_blob() as blob_stream:
        parquet_file = pq.ParquetFile(blob_stream)
        # 仅读取目标列,再转为DataFrame
        df = parquet_file.read(columns=WANTED_COLUMNS).to_pandas()
    
    # 验证结果
    print(df.info())
    

关键说明

  • 效率提升原理:Parquet是列式存储格式,PyArrow会直接从Blob流中定位并读取目标列对应的数据块,不会下载整个文件的所有内容,网络传输量会大幅减少。
  • 替代库选项:如果偏好fastparquet,也可以实现相同逻辑,只需将pyarrow.parquet的调用替换为fastparquet的对应方法,核心流式读取+列筛选的思路一致。
  • 注意事项:确保Parquet文件的元数据完整(正常生成的Parquet文件都满足),这是PyArrow能定位列位置的前提。

内容的提问来源于stack exchange,提问作者LucaM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 12:52:25