Delta 表分区 - 为什么仅适用于大于 1 TB 的表

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

我一直在使用 Azure Databricks 工作流、Spark 和 Azure Data Lake 创建 ETL/ELT 管道。它应该以近乎实时的方式处理来自 Azure SQL Server 数据库的更改(更改数据捕获过程)。我在 SQL Server 上有一堆大小为 30 – 50 GB 的大表,其中最大的大小为 190 – 220 GB,还有很多小表。 以 parquet delta 格式压缩后,它们在数据湖上可达 3 - 5 GB,最大可达 45 - 55 GB,但预计它们还会增长。我将数据存储在增量表中。由于数据管理更容易(生命周期管理、流程调试等),我认为将大表的数据存储在分区增量表中会更好。我进行了一些测试并观察到,在某些情况下(当写入的数据很大时 - 数百万条记录)将数据写入分区表所需的时间较少,但在大多数情况下(数千条记录)需要相同的时间与非分区表一样。当第一次创建表时,创建分区表需要更长的时间,这是有道理的,因为分区表的元数据更复杂。

到目前为止一切都很好,但同时我在 Databricks 的文档中也有这样的说法,即应该只对大于 1 TB 的表进行分区。 https://docs.databricks.com/en/tables/partitions.html

https://learn.microsoft.com/en-us/azure/databricks/tables/partitions

您认为我应该遵循此规则并将表创建为非分区表吗?这个规则背后隐藏着什么?为什么我应该只对大于 1 TB 的表进行分区?非常感谢您的提前答复!

我根据数据摄取的年份和月份进行分区。不会根据这些列查询数据,但我对查询数据的列没有要求。

非常感谢您的提前答复!

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

小于1Tb的表通过内置功能自动优化, 您分享的文章中提到了。

摄取时间聚类等内置功能中,会根据摄取时间自动对未分区表中的数据进行聚类,这就是您在写入数据时获得相同时间的原因。

您说数据预计会增长,在这种情况下,您可以使用液体集群,它自动处理分区,不会太多也不会太少,以及增长的表。

© www.soinside.com 2019 - 2024. All rights reserved.