和风网标志

从 Databricks Delta Lake 迁移到 Apache Iceberg 的指南

日期:

介绍

在快速变化的大世界中 数据处理 和分析,广泛数据集的潜在管理是公司做出明智决策的基础支柱。它可以帮助他们从数据中提取有用的见解。过去几年出现了多种解决方案,例如Databricks Delta Lake和Apache Iceberg。这些平台是为数据湖管理而开发的,并且都提供强大的特性和功能。但对于组织来说,有必要掌握迁移现有平台的架构、技术和功能方面的细微差别。本文将探讨从 Databricks Delta Lake 过渡到 Apache Iceberg 的复杂过程。

学习目标

  • 了解 Databricks 和 Apache Iceberg 的功能。
  • 了解比较 Databricks 和 Apache Iceberg 之间的架构组件。
  • 了解将 Delta Lake 架构迁移到 Iceberg 等开源平台的最佳实践。
  • 利用其他第三方工具作为 Delta Lake 平台的替代方案。

这篇文章是作为 数据科学博客马拉松。

目录

了解 Databricks Delta Lake

Databricks Delta Lake 基本上是构建在 Databricks 之上的复杂存储层 Apache Spark 框架。它提供了一些为无缝数据管理而开发的现代数据功能。 Delta Lake 的核心具有多种功能:

  • 酸交易:Delta Lake保证用户数据的所有修改都遵循原子性、一致性、隔离性和持久性的基本原则,从而保证数据操作的健壮有效。
  • 模式演化:灵活性主要来自于 三角洲湖,因为它无缝支持模式演变,从而使行业能够在不干扰生产中现有数据管道的情况下进行模式更改。
  • 时间旅行:就像科幻电影中的时光旅行一样,Delta Lake 提供了查询特定时间点数据快照的能力。因此,它为用户提供了深入研究数据的全面历史分析和版本控制功能。
  • 优化文件管理:Delta Lake 支持组织和管理数据文件和元数据的强大技术。它可以优化查询性能并降低存储成本。

Apache Iceberg 的特点

Apache Iceberg 为寻求增强数据湖管理解决方案的公司提供了一个有竞争力的替代方案。 Icebergs 击败了一些传统格式,例如 Parquet 或 ORC。有很多独特的优势:

  • 模式演化:用户可以在执行架构更改时利用架构演变功能,而无需进行昂贵的表重写。
  • 快照隔离:Iceberg提供了快照隔离的支持,从而保证读写的一致性。它有助于表中的并发修改,而不会影响数据完整性。
  • 元数据管理:此功能基本上将元数据与数据文件分开。并将其存储在与数据文件本身不同的专用存储库中。这样做是为了提高性能并支持高效的元数据操作。
  • 分区修剪:利用先进的修剪技术,通过减少查询执行期间扫描的数据来优化查询性能。

架构比较分析

让我们更深入地进行架构的比较分析:

Databricks Delta Lake 架构

  • 储存层:Delta Lake 利用云存储,例如 Amazon S3, 蔚蓝斑点 作为其底层存储,由数据文件和事务日志组成。
  • 元数据管理:元数据保留在事务日志中。从而实现高效的元数据操作并保证数据一致性。
  • 优化技术: Delta Lake 使用大量 优化技术。它包括数据跳过和 Z 排序,可从根本上提高查询性能并减少扫描数据时的开销。
Databricks Delta Lake 架构

阿帕奇冰山架构

  • 元数据分离: 对比起来还是有区别的 Databricks 将元数据与数据文件分离。冰山将元数据存储在与数据文件不同的存储库中。
  • 交易支持:为了确保数据的完整性和可靠性,Iceberg 拥有强大的交易协议。该协议保证了表操作的原子性和一致性。
  • 兼容性: Apache Spark、Flink 和 Presto 等引擎很容易与 Iceberg 兼容。开发人员可以灵活地将 Iceberg 与这些实时和批处理框架结合使用。
阿帕奇冰山架构

驾驭迁移格局:注意事项和最佳实践

需要大量的规划和执行来实现从 Databricks Delta Lake 到 Apache Iceberg 的迁移。应考虑以下一些因素:

  • 模式演化:保证 Delta Lake 和 Iceberg 的模式演化功能之间的完美兼容性,以在模式更改期间保持一致性。
  • 数据迁移:应根据数据量、停机时间要求和数据一致性等因素制定和实施策略。
  • 查询兼容性:应该检查 Delta Lake 和 Iceberg 之间的查询兼容性。这将导致平稳过渡,并且现有查询功能在迁移后也将保持完整。
  • 性能 测试:启动广泛的性能和回归测试以检查查询性能。还应该检查 Iceberg 和 Delta Lake 之间的资源利用率。这样,就可以识别出潜在的优化领域。

对于迁移,开发人员可以使用 Iceberg 和 databricks 文档中的一些预定义代码框架并实现相同的代码框架。步骤如下,这里使用的语言是Scala:

Step1:创建Delta Lake表

在初始步骤中,请确保 S3 存储桶为空并经过验证,然后再继续在其中创建数据。数据创建过程完成后,执行以下检查:

Step1:创建Delta Lake表
val data=spark.range(0,5)
data.write.format("delta").save("s3://testing_bucket/delta-table")

spark.read.format("delta").load("s3://testing_bucket/delta-table")
创建 Delta Lake 表
创建 Delta Lake 表

添加可选的真空代码

#adding optional code for vaccum later
val data=spark.range(5,10)
data.write.format("delta").mode("overwrite").save("s3://testing_bucket/delta-table")

第 2 步:CTAS 和读取 Delta Lake 表

#reading delta lake table
spark.read.format("delta").load("s3://testing_bucket/delta-table")

Step3:读取Delta Lake并写入Iceberg表

val df_delta=spark.read.format("delta").load("s3://testing_bucket/delta-table")
df_delta.writeTo("test.db.iceberg_ctas").create()
spark.read.format("iceberg").load("test.db.iceberg.ctas)

验证转储到S3下冰山表的数据

读取 Delta Lake 并写入 Iceberg 表
读取 Delta Lake 并写入 Iceberg 表

在简单性、性能、兼容性和支持方面比较第三方工具。这两个工具即。 AWS Glue DataBrew 和 Snowflake 具有自己的一组功能。

AWS Glue 数据酿造

迁移过程:

  • 易用性:AWS Glue DataBrew 是 AWS 云下的产品,为数据清理和转换任务提供用户友好的体验。
  • 集成:Glue DataBrew 可以与其他 Amazon 云服务无缝集成。使用 AWS 的组织可以使用此服务。

功能集:

  • 数据转换:它具有大量数据转换 (EDA) 功能。它可以在数据迁移过程中派上用场。
  • 自动分析:与其他开源工具一样,DataBrew 会自动分析数据。检测任何不一致并推荐转换任务。

性能与兼容性:

  • 可扩展性:为了处理迁移过程中可能遇到的较大数据集,Glue DataBrew 也提供了可扩展性来处理该问题。
  • 兼容性:它提供与更广泛的格式和数据源的兼容性,从而促进与各种存储解决方案的集成。

雪花

迁移过程:

  • 易于迁移:为了简单起见,Snowflake 确实提供了迁移服务,可以帮助最终用户从现有数据仓库迁移到 Snowflake 平台。
  • 综合文件:Snowflake 提供了大量文档和充足的资源来启动迁移过程。

功能集:

  • 数据仓储能力:它提供了更广泛的仓储功能,并支持半结构化数据、数据共享和数据治理。
  • 并发:该架构允许高并发,适合数据处理要求较高的组织。

性能与兼容性:

  • 性能:Snowflake 在可扩展性方面也具有高效的性能,使最终用户能够轻松处理大量数据。
  • 兼容性:Snowflake还为不同的数据源提供了多种连接器,从而保证了与各种数据生态系统的交叉兼容性。
"

结论

为了优化数据湖和仓库管理工作流程并提取业务成果,过渡对于组织至关重要。行业可以在功能以及架构和技术差异方面利用这两个平台,并决定选择哪个平台来充分利用其数据集的潜力。从长远来看,它也对组织有帮助。随着动态和快速变化的数据环境,创新的解决方案可以让组织保持优势。

关键精华

  • Apache Iceberg 提供了出色的功能,例如快照隔离、高效的元数据管理、分区修剪,从而提高了数据湖管理能力。
  • 迁移到 Apache Iceberg 需要谨慎的规划和执行。组织应考虑架构演变、数据迁移策略和查询兼容性等因素。
  • Databricks Delta Lake 利用云存储作为底层存储层,存储数据文件和事务日志,而 Iceberg 将元数据与数据文件分离,从而增强性能和可扩展性。
  • 组织还应考虑财务影响,例如存储成本、计算费用、许可费用以及迁移所需的任何临时资源。

常见问题解答

Q1.从 Databricks Delta Lake 到 Apache Iceberg 的迁移过程是如何执行的?

答:它涉及从 Databricks Delta Lake 导出数据,必要时清理数据,然后将其导入 Apache Iceberg 表中。

Q2。是否有任何自动化工具可以帮助您在无需手动干预的情况下进行迁移?

答:组织通常利用自定义 python/Scala 脚本和 ETL 工具来构建此工作流程。

Q3。组织在迁移过程中遇到哪些常见挑战?

答:很可能发生的一些挑战是:数据一致性、处理架构演变差异以及优化迁移后的性能。

Q4。 Apache Iceberg 与 Parquet 或 ORC 等其他表格式有什么区别?

答:Apache Iceberg 提供了模式演化、快照隔离和高效元数据管理等功能,这些功能与 Parquet 和 ORC 不同。

Q5.我们可以将 Apache Iceberg 与基于云的存储解决方案结合使用吗?

答:当然,Apache Iceberg 与常用的基于云的存储解决方案兼容,例如 AWS S3、Azure Blob Storage 和 Google Cloud Storage。

本文中显示的媒体不属于 Analytics Vidhya 所有,其使用由作者自行决定。

现货图片

最新情报

现货图片