Delta Live Tables概念
本文介绍了有效使用Delta Live Tables需要了解的基本概念。
管道
Delta Live表的主要执行单元是管道。管道是将数据源连接到目标的有向无环图(DAG)数据集。您可以使用返回Spark SQL或Koalas DataFrames的SQL查询或Python函数定义Delta Live Tables数据集的内容。管道还具有关联的配置,定义了运行管道所需的设置。在定义数据集时,可以选择指定数据质量约束。
在Databricks中实现Delta Live Tables管道笔记本电脑。您可以在单个笔记本或多个笔记本中实现管道。单个笔记本中的所有查询都必须用Python或SQL实现,但您可以使用Python和SQL笔记本混合配置多个笔记本管道。每个笔记本共享输出数据的存储位置,并且能够引用管道中其他笔记本的数据集。
你可以使用砖回购来存储和管理您的Delta Live Tables笔记本。要使笔记本管理与Databricks回购可用时,您创建管道:
添加注释行
--砖笔记本源
在SQL笔记本的顶部。添加注释行
#砖笔记本源
在Python笔记本的顶部。
您还可以使用Databricks回购存储Python代码,并将其作为模块导入到管道笔记本中。看到从Databricks回购中导入Python模块。
看到创建、运行和管理Delta Live Tables管道了解有BOB低频彩关创建和运行管道的更多信息。看到在管道中配置多个笔记本这是一个配置多笔记本管道的示例。
预期
你使用预期对数据集的内容指定数据质量控制。与检查
约束在传统数据库中阻止添加任何不符合约束的记录,期望在处理不符合数据质量要求的数据时提供了灵活性。这种灵活性允许您处理和存储您预期会很混乱的数据以及必须满足严格质量要求的数据。
管道的设置
管道设置是在JSON中定义的,包括运行管道所需的参数,包括:
库(以笔记本的形式)包含描述在Delta Lake中创建目标数据集的表和视图的查询。
存储处理所需的表和元数据的云存储位置。这个位置可以是DBFS,也可以是您提供的其他位置。
需要进行数据处理的Spark集群的可选配置。
看到Delta Live Tables设置欲知详情。
数据集
在Delta Live Tables管道中有两种类型的数据集:的观点而且表。
视图类似于SQL中的临时视图,是某些计算的别名。视图允许您将复杂的查询分解为更小或更容易理解的查询。视图还允许您将给定的转换重用为多个表的源。视图仅在管道中可用,不能以交互方式查询。
表类似于传统的物化视图。中的活动表运行时自动创建表δ格式,并确保使用创建表的查询的最新结果更新这些表。
你可以定义一个生活或流媒体直播视图或表:
活动表或视图总是反映定义它的查询的结果,包括当定义表或视图的查询更新或输入数据源更新时。像传统的物化视图一样,活动表或视图可以在可能优化计算资源和时间的情况下完全计算。
流直播表或视图处理仅在上次管道更新后添加的数据。流表和视图是有状态的;如果定义查询更改,则将基于新的查询处理新数据,并且不会重新计算现有数据。
流媒体直播表对于很多用例都很有价值,包括:
数据保留:流实时表可以无限期地保存数据,即使输入数据源的保留率很低,例如,流式数据源如Apache Kafka或Amazon Kinesis。
数据源演变:即使数据源发生变化,数据也可以保留,例如从Kafka移动到Kinesis。
你可以发布使下游使用者可以发现和查询您的表。
管道的更新
在创建管道并准备好运行它之后,您将启动一个更新。更新:
使用正确的配置启动集群。
发现所有定义的表和视图,并检查任何分析错误,如无效的列名、缺失的依赖项和语法错误。
使用可用的最新数据创建或更新表和视图。
更新的表和视图,以及如何更新这些表和视图,取决于更新类型:
刷新所有:更新所有活动表以反映其输入数据源的当前状态。对于所有流直播表,新行被追加到表中。
全部刷新:更新所有活动表以反映其输入数据源的当前状态。对于所有流直播表,Delta live tables尝试清除每个表中的所有数据,然后从流源加载所有数据。
刷新选择:的行为
刷新选择
等于刷新所有
,但只允许刷新选定的表。所选活动表将被更新以反映其输入数据源的当前状态。对于选定的流式直播表,新行被追加到表中。完全刷新选择:的行为
完整的刷新选择
等于完整的刷新所有
,但允许您仅对选定的表执行完全刷新。所选活动表将被更新以反映其输入数据源的当前状态。对于选定的流直播表,Delta live tables尝试清除每个表中的所有数据,然后从流源加载所有数据。
对于现有的活动表,更新具有与SQL相同的行为刷新
从物质化的角度来看。对于新的活动表,其行为与SQL相同创建
操作。
如果管道是触发,系统将在刷新管线中的所有表或选定表一次后停止处理。
当触发的更新成功完成时,作为更新的一部分的每个表都保证根据更新开始时可用的数据进行更新。
对于需要低延迟的用例,您可以配置一个管道来持续更新。看到连续和触发管道有关为管道选择执行模式的详细信息。
连续和触发管道
Delta Live Tables支持两种不同的执行模式:
触发的管道用当前可用的任何数据更新每个表,然后停止运行管道的集群。Delta Live Tables自动分析表之间的依赖关系,并从计算从外部源读取的依赖关系开始。管道中的表在其依赖数据源更新之后更新。
连续管道在输入数据发生变化时持续更新表。一旦启动更新,它将继续运行,直到手动停止。连续管道需要始终运行的集群,但要确保下游消费者拥有最新的数据。
触发管道可以减少资源消耗和开销,因为集群只运行足够长的时间来执行管道。但是,直到管道被触发,新的数据才会被处理。连续管道需要一个始终运行的集群,这更昂贵,但减少了处理延迟。
的连续
标志。管道的设置控制执行模式。管道在默认情况下以触发执行模式运行。集连续
来真正的
如果您需要低延迟刷新管道中的表。
{…"continuous":真,…}
执行模式与正在计算的表的类型无关。实时表和流式实时表都可以在任意一种执行模式下更新。
如果管道中的某些表具有较弱的延迟要求,则可以通过设置pipelines.trigger.interval
设置:
spark_conf={“pipelines.trigger.interval”:“1小时”}
此选项不会在管道更新之间关闭集群,但可以释放资源用于更新管道中的其他表。
连续管道中的表和视图
您可以在持续运行的管道中使用活动表或视图,也可以使用流化活动表或视图。为了避免不必要的处理,管道会自动监视相关的Delta表,并仅在这些相关表的内容发生更改时执行更新。
Delta Live Tables运行时无法检测非Delta数据源中的更改。表仍然会定期更新,但是有一个更高的默认触发间隔,以防止过多的重新计算减慢集群上发生的任何增量处理。
开发与生产模式
您可以通过在开发和生产模式之间切换来优化管道执行。使用按钮在这两种模式之间切换。默认情况下,管道以开发模式运行。
当你在开发模式下运行管道时,Delta Live Tables系统:
重用集群以避免重新启动的开销。默认情况下,启用开发模式时,集群运行2小时。你可以用
pipelines.clusterShutdown.delay
在集群配置。禁用管道重试,以便立即检测和修复错误。
在生产模式下,Delta Live Tables系统:
针对特定的可恢复错误重新启动集群,包括内存泄漏和陈旧的凭据。
在发生特定错误时重试执行,例如,群集启动失败。
请注意
在开发模式和生产模式之间切换只控制集群和管道执行行为。必须将发布表目录中的存储位置和目标模式配置为管道设置的一部分,并且在模式之间切换时不受影响。
Databricks增强自动缩放
Databricks Enhanced Autoscaling通过根据工作负载自动分配集群资源来优化集群利用率,对管道的数据处理延迟的影响最小。
增强的自动缩放改进了数据库集群自动伸缩功能具有以下特点:
增强的自动伸缩实现了流工作负载的优化,并添加了改进来提高批处理工作负载的性能。这些优化导致更有效的集群利用、更少的资源使用和更低的成本。
增强型自动伸缩可以主动关闭未充分利用的节点,同时保证在关闭期间没有失败的任务。现有的集群自动伸缩特性仅在节点空闲时才会缩小节点。
在Delta Live Tables UI中创建新管道时,Enhanced Autoscaling是默认的自动缩放模式。您可以为现有管道启用增强的自动伸缩编辑UI中的管道设置。在使用Delta Live表创建或编辑管道时,还可以启用Enhanced AutoscalingAPI。
启用增强型自动缩放
要使用增强型自动缩放,请执行以下操作之一:
添加
自动定量
管道的配置默认的
集群和设置模式
字段增强
。下面的示例配置了一个增强型自动伸缩集群,其中最少5个工人,最多10个工人。max_workers
必须大于等于min_workers
。
请注意
增强的自动缩放可用于
默认的
集群。如果包括自动定量
在维护集群配置中,使用现有的集群自动伸缩特性。的
自动定量
配置有两种方式:遗产
:使用集群自动定量。增强
:使用增强型自动缩放。
{“集群”:[{“标签”:“默认”,“自动定量”:{“min_workers”:5,“max_workers”:10,“模式”:“增强”}}]}
如果管道是,那么在自动伸缩配置更改后,管道将自动重新启动连续。重新启动后,预计会有一小段时间的延迟增加。在这个短暂的延迟增加之后,应该根据您的自动定量
配置后,管道延迟恢复到以前的延迟特征。
监视增强的自动伸缩管道
您可以使用Delta Live Tables事件日志来监视增强的自动伸缩指标。您可以在用户界面。增强的自动伸缩事件具有自动定量
事件类型。以下是事件示例:
事件 |
消息 |
---|---|
集群大小调整请求已启动 |
|
集群大小调整请求成功 |
|
集群大小调整请求部分成功 |
|
群集调整大小请求失败 |
|
属性,也可以查看增强的自动伸缩事件事件日志:
要查询事件日志以获取待办事项指标,请参见积压指标。
要在增强型自动伸缩操作期间监视集群调整大小的请求和响应,请参见Databricks增强的自动缩放事件。
产品版本
您可以使用Delta Live Tables产品版本选项来运行具有最适合管道需求的功能的管道。可供选择的产品版本如下:
核心
运行流摄取工作负载。选择核心
如果您的管道不需要诸如更改数据捕获(CDC)或Delta Live表之类的高级特性,请使用版本预期。箴
来运行流摄取和CDC工作负载。的箴
产品版支持所有的核心
特性,以及对需要根据源数据更改更新表的工作负载的支持。先进的
来运行流摄取工作负载、CDC工作负载和需要预期的工作负载。的先进的
的特性核心
而且箴
版本,并且还支持执行德尔塔Live表期望的数据质量约束。
您可以在使用时选择产品版本创建或编辑一个管道。您可以为每个管道选择不同的版本。
如果您的管道包含所选产品版本不支持的特性,例如,期望,您将收到一条错误消息,其中包含错误的原因。然后可以编辑管道以选择适当的版本。