You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Polars读取Azure Databricks创建的Delta表报错:未知单位'days'

问题描述

我通过Azure Databricks在Azure Data Lake中创建了一些Delta表,尝试参照Polars官方文档指引执行pl.read_delta(table_path, storage_options=storage_options)读取这些表,但操作失败并出现报错。具体报错信息如下:

Exception has occurred: PyDeltaTableError X
Failed to apply transaction log: Failed to read delta config: Validation failed - Unknown unit 'days
File "C:\Users\S1P967\Untitled-1.txt", line 12, in <module> pl.read_delta(table_path, storage_options=storage_options)
deltalake.PyDeltaTableError: Failed to apply transaction log: Failed to read delta config: Validation failed - Unknown unit 'days'

请问这是否意味着Databricks实现的Delta事务日志结构存在差异?

解答

这个报错本质是Databricks的Delta Lake扩展了标准Delta Lake的配置项,而Polars依赖的deltalake库(Rust实现的Delta Lake客户端)目前不支持这些Databricks专属的配置单位。

具体来说,你遇到的Unknown unit 'days'问题,大概率是因为Databricks创建的Delta表中包含了类似delta.logRetentionDuration或delta.deletedFileRetentionDuration这类配置,且使用了days作为时间单位——而标准Delta Lake的Rust客户端(deltalake)目前只支持seconds作为这类配置的单位,无法识别days。

这并非事务日志核心结构的差异,而是Databricks对Delta Lake做了厂商专属扩展,而Polars依赖的底层Delta客户端尚未兼容这些扩展项。

可行的解决方向:

  • 手动修改Delta表的配置,将时间单位改为seconds(比如把30 days替换为2592000 seconds),之后再用Polars读取
  • 等待deltalake库更新,支持Databricks的时间单位扩展
  • 先通过Databricks将Delta表导出为Parquet格式,再用Polars读取Parquet文件

内容的提问来源于stack exchange,提问作者Grevioos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 17:45:07