将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不支持基于云条件触发工作负载的复杂逻辑,但您可以将结构化流与工作流以增量方式处理数据。