能否通过Python SDK使用查询加速查询ADLS中的Parquet文件
问题答案
完全可以通过Python SDK调用查询加速(query acceleration)能力查询Azure Data Lake Storage(ADLS)中的Parquet文件,可直接复用查询CSV时的SQL语法,仅需调整输入格式相关参数即可。
核心使用要点
- 依赖要求:需安装12.10.0及以上版本的
azure-storage-blob官方SDK包,ADLS Gen2的查询加速能力复用Blob存储的查询接口实现,无需单独安装其他SDK。 - 配置差异:和查询CSV文件的代码逻辑几乎一致,仅需在调用查询接口时,将入参里的CSV格式配置(
DelimitedTextDialect)替换为Parquet专属的ParquetDialect配置。 - SQL兼容性:支持的SQL语法和查询CSV时完全一致,可直接写列裁剪、行过滤逻辑,所有计算在存储侧完成,仅返回符合条件的结果数据,无需下载全量Parquet文件。
最小实现代码示例
from azure.storage.blob import BlobServiceClient, ParquetDialect from azure.identity import DefaultAzureCredential # 替换为实际的存储账户、容器、文件路径信息 storage_account = "<你的ADLS Gen2存储账户名>" container = "<目标容器名称>" parquet_blob_path = "<Parquet文件在容器内的相对路径>" # 初始化存储客户端 service_client = BlobServiceClient( account_url=f"https://{storage_account}.dfs.core.windows.net", credential=DefaultAzureCredential() ) blob_client = service_client.get_blob_client(container=container, blob=parquet_blob_path) # 执行查询,SQL写法和查询CSV完全相同 query_sql = "SELECT user_id, order_amount FROM BlobStorage WHERE order_time >= '2024-01-01'" with blob_client.query_blob( query=query_sql, blob_format=ParquetDialect() ) as resp_stream: # 读取返回的结果流做后续处理 query_result = resp_stream.readall()
注意事项:使用前需提前在存储账户配置页开启查询加速功能,Parquet格式的查询加速仅支持已开启分层命名空间的ADLS Gen2账户,不支持未开启分层命名空间的普通Blob存储账户。
内容的提问来源于stack exchange,提问作者Rebe
相关产品推荐
相关产品推荐

