将ETL管道迁移到Databricks

本文描述了将运行在其他数据系统上的提取、转换、加载(ETL)管道迁移到Databricks所需的工作。如果您迁移了Apache Spark代码,请参见为Databricks调整现有的Apache Spark代码

有关从数据仓库迁移到湖边小屋的一般信息,请参见将您的企业数据仓库迁移到Databricks Lakehouse.有关如何从Parquet移动到Delta Lake的选项,请参见迁移一个Parquet数据湖到Delta湖

你能在Databricks上运行Hive管道吗?

大多数Hive工作负载可以在Databricks上运行,只需进行最少的重构。Databricks Runtime支持的Spark SQL版本允许许多HiveQL结构。看到Apache Hive兼容性.Databricks默认包含Hive metastore。大多数Hive迁移需要解决以下几个主要问题:

  • Hive SerDe需要更新以使用databicks原生文件编解码器。(将DDL从存储作为使用使用Databricks SerDe。)

  • Hive udf必须安装到作为库的集群或者重构为原生Spark。因为Hive udf已经在JVM中,所以它们可以为许多工作负载提供足够的性能。[_] (/ udf / index.md # udf-efficiency)。

  • 表的目录结构应该改变,因为Databricks使用的分区与Hive不同。看到何时在Databricks上对表进行分区

如果选择在初始迁移期间将表更新到Delta Lake,则不支持许多DDL和DML语句。这些包括:

  • ROWFORMAT

  • SERDE

  • OUTPUTFORMAT

  • INPUTFORMAT

  • 压缩

  • 存储作为

  • 分析表格分区

  • 改变表格(添加|删除)分区

  • 改变表格恢复分区

  • 改变表格SERDEPROPERTIES

  • 创建表格就像

  • 插入覆盖目录

  • 负载数据

  • 使用分区(part_spec)截断表格

你能在Databricks上运行SQL ETL管道吗?

将SQL工作负载从其他系统迁移到Databricks通常只需要很少的重构,这取决于源代码中使用的系统特定协议的程度。Databricks在Databricks Runtime 8.4及以上版本中使用Delta Lake作为默认的表格式,因此用事务担保默认情况下。

Spark SQL基本上是兼容ansi的,但可能存在一些行为上的差异。看到Databricks Lakehouse与数据仓库有何不同?

由于数据系统倾向于以不同的方式配置对外部数据的访问,因此重构SQL ETL管道的大部分工作可能是配置对这些数据源的访问,然后更新逻辑以使用这些新连接。Databricks提供连接到的选项摄取的许多数据源

你能在Databricks上运行dbt ETL管道吗?

Databricks提供了一个与DBT的本地集成,允许您利用现有的DBT脚本进行很少的重构。

Delta Live Tables提供了一种优化的databicks原生声明性SQL语法,用于创建、测试和部署管道。虽然可以在Databricks上利用dbt,但对Delta Live Tables的代码进行少量重构可能会降低在Databricks上操作管道的总成本。看到Delta Live Tables简介

能否将无服务器云功能迁移到Databricks?

自定义无服务器云功能的可扩展性和多功能性使得很难提供通用的建议,但这些功能最常见的用例之一是等待文件或数据出现在位置或消息队列中,然后执行一些操作。虽然Databricks不支持基于云条件触发工作负载的复杂逻辑,但您可以将结构化流与工作流以增量方式处理数据。

使用自动加载程序用于优化来自云对象存储的数据摄取。结构化流可以处理来自流媒体资源几乎实时。

你能在Databricks上运行来自其他数据系统的语法吗?

在Databricks上运行之前,用SQL、Apache Spark或Hive以外的语言定义的ETL管道可能需要大量重构。Databricks有帮助客户从目前使用的大多数数据系统迁移的经验,并且可能有可用的资源来启动您的迁移工作。