本地Jupyter读取Azure Data Lake Delta文件遇参数不存在问题求助
解决Jupyter Notebook读取ADLS中Delta文件的问题
你遇到的错误是因为deltalake库的DeltaTable构造函数并不支持file_system参数——参考的文档可能对应旧版本或其他库实现。以下是两种可行的解决方式:
方式一:纯Python环境(依赖deltalake库)
直接通过storage_options参数传递ADLS的认证配置,无需手动创建AzureBlobFileSystem实例:
from deltalake import DeltaTable # 替换为你的容器名、Delta文件路径和凭证 delta_path = "abfss://<container-name>@devblobstorage.dfs.core.windows.net/path/delta/fileInQuestion.delta" df_delta = DeltaTable( delta_path, storage_options={ "account_name": "devblobstorage", "credential": credential # 这里传入你的访问凭证,如SAS Token、服务主体密钥等 } ).to_pandas()
注意:确保安装了最新版的deltalake和adlfs,可以通过pip install --upgrade deltalake adlfs更新。
方式二:使用PySpark读取(适合有Spark环境的场景)
如果你的环境已配置Spark,可通过Delta Lake的Spark连接器读取,功能更全面:
from pyspark.sql import SparkSession # 初始化Spark Session并配置Delta扩展 spark = SparkSession.builder \ .appName("ReadDeltaFromADLS") \ .config("spark.sql.extensions", "io.delta.sql.DeltaSparkSessionExtension") \ .config("spark.sql.catalog.spark_catalog", "org.apache.spark.sql.delta.catalog.DeltaCatalog") \ .getOrCreate() # 配置ADLS访问凭证(替换为你的租户ID、客户端ID和密钥) spark.conf.set("fs.azure.account.auth.type.devblobstorage.dfs.core.windows.net", "OAuth") spark.conf.set("fs.azure.account.oauth.provider.type.devblobstorage.dfs.core.windows.net", "org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider") spark.conf.set("fs.azure.account.oauth2.client.id.devblobstorage.dfs.core.windows.net", "<your-client-id>") spark.conf.set("fs.azure.account.oauth2.client.secret.devblobstorage.dfs.core.windows.net", "<your-client-secret>") spark.conf.set("fs.azure.account.oauth2.client.endpoint.devblobstorage.dfs.core.windows.net", "https://login.microsoftonline.com/<your-tenant-id>/oauth2/token") # 读取Delta文件并转为Pandas DataFrame delta_path = "abfss://<container-name>@devblobstorage.dfs.core.windows.net/path/delta/fileInQuestion.delta" spark_df = spark.read.format("delta").load(delta_path) df_delta = spark_df.toPandas()
内容的提问来源于stack exchange,提问作者Joakim Torsvik
相关产品推荐
相关产品推荐

