如何通过abfss路径读取数据湖文件并解密为Pandas DataFrame?(共享集群)
解决方案:适配ABFSS路径的加密CSV解密方案
因为open仅支持本地文件系统,无法直接读取ABFSS路径的文件,且共享访问模式集群限制了dbutils.fs.cp的使用,推荐使用fsspec库直接流式读取ABFSS路径的文件,无需下载到本地,完美适配你的解密逻辑。
步骤1:安装依赖库
在Databricks笔记本中执行以下命令安装所需库:
%pip install fsspec adlfs
fsspec提供了统一的文件系统接口,adlfs是针对Azure存储(ABFSS)的实现,两者配合可直接操作ABFSS路径。
步骤2:修改解密函数
将原函数中的open替换为fsspec.open,其余解密逻辑保持不变:
import fsspec import io import pandas as pd def decrypt_csv_file_to_pandas(self, source_path, pgp_passphrase, csv_separator): """ Decrypt a csv file directly into a pandas dataframe (supports ABFSS paths). """ # 使用fsspec.open替代原生open,直接读取ABFSS路径文件 with fsspec.open(source_path, 'rb') as f: decrypted = self.gpg.decrypt_file( file=f, passphrase=pgp_passphrase ) print(decrypted.status) df_pd = pd.read_csv(io.StringIO(str(decrypted)), sep=csv_separator, low_memory=False, keep_default_na=False) return df_pd
关键说明
- fsspec会自动处理Databricks集群与Azure存储的认证(基于集群配置的服务主体或托管身份),无需额外手动配置密钥。
- 该方案采用流式读取,不会将文件下载到本地节点,完全适配共享访问模式集群的限制。
- 原有的PGP解密、Pandas读取逻辑无需修改,仅替换文件读取方式即可。
内容的提问来源于stack exchange,提问作者play_something_good
相关产品推荐
相关产品推荐

