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

Databricks读取snappy.parquet文件返回空DataFrame问题求助

问题分析与解决方案

核心问题

你用Amazon DMS迁移生成的是普通snappy.parquet文件,并非Delta Lake格式。Delta Lake依赖_delta_log目录下的元数据文件管理数据,而DMS不会自动生成这些元数据,所以用format('delta')加载自然返回空结果。

直接解决方案:读取Parquet文件

把读取格式改成parquet,同时去掉多余的header=true参数(Parquet是列存储格式,自带Schema,不需要指定header):

df = spark.read.option("recursiveFileLookup","true").parquet('/mnt/delta/postgres_table')
display(df)

转换为Delta Lake格式(可选)

如果需要使用Delta Lake的ACID、版本控制等特性,可将读取后的Parquet数据写入Delta格式:

# 读取Parquet数据
df = spark.read.option("recursiveFileLookup","true").parquet('/mnt/delta/postgres_table')
# 写入Delta Lake目录(建议用新目录避免覆盖原文件)
df.write.format('delta').mode('overwrite').save('/mnt/delta/postgres_table_delta')

# 之后即可用Delta格式读取
delta_df = spark.read.format('delta').load('/mnt/delta/postgres_table_delta')
display(delta_df)

额外排查点

  • 验证挂载路径:执行dbutils.fs.ls('/mnt/delta/postgres_table')确认Parquet文件存在且路径正确
  • 检查Schema:读取Parquet后执行df.printSchema(),确认字段与原PostgreSQL表一致
  • 权限验证:确保Databricks集群拥有该S3路径的读权限(即使能看到文件,也可能存在细粒度权限问题)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 20:35:19