如何将 parquet 文件从 Azure Blob 读取到 Pandas DataFrame 中?

Ris*_*tan 13 azure parquet azure-blob-storage

我需要在本地计算机上将 .parquet 文件读入 Python 中的 Pandas DataFrame,而无需下载文件。parquet 文件存储在具有分层目录结构的 Azure blob 上。我正在做类似以下的事情,但我不知道如何继续:

from azure.storage.blob import BlobServiceClient
blob_service_client = BlobServiceClient.from_connection_string(connection_string)

blob_client = blob_service_client.get_blob_client(container="abc", blob="/xyz/pqr/folder_with_parquet_files")
Run Code Online (Sandbox Code Playgroud)

出于隐私考虑,我在这里使用了虚拟名称。假设目录“folder_with_parquet_files”包含“n”个。parquet 文件,如何将它们读入单个 Pandas DataFrame 中?

小智 13

您好,您可以使用 pandas 并从流中读取镶木地板。它对于小数据集非常有帮助,这里不需要 sprak 会话。这可能是最快的方法,特别是对于测试目的。

import pandas as pd
from io import BytesIO
from azure.storage.blob import ContainerClient

path = '/path_to_blob/..'
conn_string = <conn_string>
blob_name = f'{path}.parquet'

container = ContainerClient.from_connection_string(conn_str=conn_string, container_name=<name_of_container>)

blob_client = container.get_blob_client(blob=blob_name)
stream_downloader = blob_client.download_blob()
stream = BytesIO()
stream_downloader.readinto(stream)
processed_df = pd.read_parquet(stream, engine='pyarrow')
Run Code Online (Sandbox Code Playgroud)