优化突触增量湖 table 不减少文件数量
optimizing synapse delta lake table not reducing the number of files
我通过以下方式创建了一个简单的突触三角洲湖 table:
CREATE TABLE IF NOT EXISTS db1.tbl1 (
id INT NOT NULL,
name STRING NOT NULL
)
USING DELTA
我已多次将数据行合并到其中,现在我在底层 ADLS gen 2 存储帐户容器中看到总共 15 个 parquet 文件。如果我 select 行,我会按预期看到我最近的合并,例如:
+---+-------+
| id| name|
+---+-------+
| 1| adam|
| 2| bob|
| 3|charles|
+---+-------+
然而,当我 运行:
OPTIMIZE db1.tbl1
我仍然看到了 15 个文件。它不应该“压缩”文件,显着减少文件总数吗?
Vacuum
将是满足您需要的更 suitable 命令。 Optimize
更适合以柱状格式重新定位数据并优化 table 的性能。 Vacuum 会删除您的旧数据文件。 vacuum 的默认设置是保留 7 天。如果你想清理最近的数据文件,你可以用 retain 参数指定它。在这种情况下,您将缩短时间旅行的能力。清理超过 1 小时的所有内容的示例:
VACUUM db1.tbl RETAIN 1 HOURS
您也可以选择干掉 运行 这个命令,看看在 运行 实际执行它之前会发生什么。这将列出要删除的文件:
VACUUM db1.tbl RETAIN 1 HOURS DRY RUN
有关 vacuum 命令的更多信息:https://docs.microsoft.com/en-us/azure/databricks/spark/latest/spark-sql/language-manual/delta-vacuum。
我通过以下方式创建了一个简单的突触三角洲湖 table:
CREATE TABLE IF NOT EXISTS db1.tbl1 (
id INT NOT NULL,
name STRING NOT NULL
)
USING DELTA
我已多次将数据行合并到其中,现在我在底层 ADLS gen 2 存储帐户容器中看到总共 15 个 parquet 文件。如果我 select 行,我会按预期看到我最近的合并,例如:
+---+-------+
| id| name|
+---+-------+
| 1| adam|
| 2| bob|
| 3|charles|
+---+-------+
然而,当我 运行:
OPTIMIZE db1.tbl1
我仍然看到了 15 个文件。它不应该“压缩”文件,显着减少文件总数吗?
Vacuum
将是满足您需要的更 suitable 命令。 Optimize
更适合以柱状格式重新定位数据并优化 table 的性能。 Vacuum 会删除您的旧数据文件。 vacuum 的默认设置是保留 7 天。如果你想清理最近的数据文件,你可以用 retain 参数指定它。在这种情况下,您将缩短时间旅行的能力。清理超过 1 小时的所有内容的示例:
VACUUM db1.tbl RETAIN 1 HOURS
您也可以选择干掉 运行 这个命令,看看在 运行 实际执行它之前会发生什么。这将列出要删除的文件:
VACUUM db1.tbl RETAIN 1 HOURS DRY RUN
有关 vacuum 命令的更多信息:https://docs.microsoft.com/en-us/azure/databricks/spark/latest/spark-sql/language-manual/delta-vacuum。