如何在Databricks中用Python读取Azure Blob存储的.gz压缩Parquet文件
Databricks 读取 Azure Blob 中 parquet.gz 格式文件方法
1. 配置 Azure Blob 存储访问权限
首先需要在Databricks环境中配置存储访问凭证,支持两种常用配置方式:
- 方式1:使用存储账户密钥配置
# 替换为实际的存储账户名称、容器名称、存储账户密钥 storage_account_name = "<your-storage-account-name>" container_name = "<your-container-name>" storage_account_key = "<your-storage-account-key>" # 配置Spark访问凭证 spark.conf.set( f"fs.azure.account.key.{storage_account_name}.dfs.core.windows.net", storage_account_key )
- 方式2:使用SAS令牌配置(权限管控更灵活)
# 替换为实际的存储账户名称、容器名称、SAS令牌 storage_account_name = "<your-storage-account-name>" container_name = "<your-container-name>" sas_token = "<your-sas-token>" # 配置Spark访问凭证 spark.conf.set( f"fs.azure.sas.{container_name}.{storage_account_name}.dfs.core.windows.net", sas_token )
2. 直接读取目标文件
配置完成后可直接通过ABFS协议路径读取文件,无需下载到Databricks本地:
# 替换为实际的文件所在目录路径,<your-directory-path>替换为blob中存储文件的目录路径 file_path = f"abfss://{container_name}@{storage_account_name}.dfs.core.windows.net/<your-directory-path>/" # 读取目录下所有符合格式的parquet.gz文件,Spark自动识别gz压缩格式 df = spark.read.parquet(file_path) # 可按需查看数据 df.show() # 如果需要转成Pandas DataFrame操作(仅建议小数据量场景使用) # pandas_df = df.toPandas()
补充说明
- 如果目录下存在其他非目标格式文件,可通过通配符精准匹配你的命名规则,将路径修改为:
f"abfss://{container_name}@{storage_account_name}.dfs.core.windows.net/<your-directory-path>/*-*-*-*-*.parquet.gz" - 整个读取过程直接在集群计算节点和Azure Blob存储之间完成,不会占用Databricks本地存储资源。
- 如果你只需要读取指定日期的文件,也可以把通配符对应日期位置替换为目标日期,比如
*ab_test-20210604-*.parquet.gz即可只读取2021年6月4日的对应文件。
内容的提问来源于stack exchange,提问作者Aman Patel AIITycJhtw
相关产品推荐
相关产品推荐

