Delta 表已被删除,但 Delta 文件在后端银层可用

问题描述 投票:0回答:1

Delta 表已被删除,但 Delta 文件在后端银层可用

使用的方法是:我们通过将 parquet 文件从 raw 加载到 silver 来进行摄取,每天删除 delta 文件夹,在执行作业时删除重新创建的表。

有时我们确实看到增量文件是在银层中创建的,但在前端我们看不到表格

databricks azure-databricks delta-lake databricks-sql delta
1个回答
0
投票

正如您所提到的,您看到了增量文件,但无法看到表格结果 得到空结果的可能原因

  • 每当作业执行时,您都会删除并重新创建表
  • 发生这种情况是因为在写入和读取表之间表中的数据被截断。

enter image description here

您可以使用以下查询直接使用 Spark 读取 Delta 文件

spark.sql("DESCRIBE DETAIL delta.`/your/delta/table/path`").show(truncate=False)

enter image description here

直接从 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)

enter image description here

使用

%sql
DROP 表比执行文件级操作更好。

有可能数据已写入 Delta 文件,但尚未刷新到表中。为了确保所有更改都可见,您可以尝试在文件级别和 SQL 表级别运行

OPTIMIZE

OPTIMIZE
会将所有部分文件压缩为 1 个文件,并作为对增量表最新快照的引用。
OPTIMIZE
从事务日志中删除不必要的文件。
OPTIMIZE
不会对表进行任何与数据相关的更改,因此在
OPTIMIZE
之前和之后的读取具有相同的结果。

了解更多关于 在 Delta Lake 上优化的压缩数据文件

优化SQL表:

%sql
OPTIMIZE data_table

enter image description here

优化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) enter image description here

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.