Delta 表已被删除,但 Delta 文件在后端银层可用
使用的方法是:我们通过将 parquet 文件从 raw 加载到 silver 来进行摄取,每天删除 delta 文件夹,在执行作业时删除重新创建的表。
有时我们确实看到增量文件是在银层中创建的,但在前端我们看不到表格
正如您所提到的,您看到了增量文件,但无法看到表格结果 得到空结果的可能原因
您可以使用以下查询直接使用 Spark 读取 Delta 文件
spark.sql("DESCRIBE DETAIL delta.`/your/delta/table/path`").show(truncate=False)
直接从 Delta 表中删除文件可能会影响表的完整性。 建议使用 VACUUM 命令根据保留策略删除文件。
了解更多关于 对 Delta 桌子进行真空吸尘 如果您想删除特定的 Delta 文件:
dbutils.fs.rm("/your/delta/table/path/_delta_log/00000000000000000000.delta
”
您可以使用下面的查询来查看对表执行的操作。
%sql
DESCRIBE HISTORY data_table
正如您提到的,增量表已被删除,但您会在银层中看到增量文件。 下面的命令将帮助您列出组成 Delta 表的文件
describe_df =spark.sql(f"DESCRIBE DETAIL delta.`{delta_path}`")
display(describe_df)
使用
%sql
DROP 表比执行文件级操作更好。
有可能数据已写入 Delta 文件,但尚未刷新到表中。为了确保所有更改都可见,您可以尝试在文件级别和 SQL 表级别运行
OPTIMIZE
。
OPTIMIZE
会将所有部分文件压缩为 1 个文件,并作为对增量表最新快照的引用。
OPTIMIZE
从事务日志中删除不必要的文件。
OPTIMIZE
不会对表进行任何与数据相关的更改,因此在 OPTIMIZE
之前和之后的读取具有相同的结果。
了解更多关于 在 Delta Lake 上优化的压缩数据文件
优化SQL表:
%sql
OPTIMIZE data_table
优化ADLS中的Delta文件:
spark.sql("OPTIMIZE delta.`{}`".format(delta_path))
history_df = spark.sql(f"DESCRIBE HISTORY delta.`{delta_path}`")
display(history_df)
描述Delta表、Delta文件的历史,包括优化: History_df = Spark.sql(f"描述历史增量。
{delta_path}
")
显示(history_df)