首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Delta DLT管道正在初始化状态

Delta DLT管道正在初始化状态
EN

Stack Overflow用户
提问于 2022-11-11 07:20:59
回答 1查看 65关注 0票数 1

我有一个DLT管道,其中通过从sql服务器读取来创建Delta表,然后调用几个apis来更新宇宙中的元数据。每当我们启动它,它就会在初始化状态中被击中。但是,当我们在一个独立的笔记本中使用交互式集群运行相同的代码时,它工作得很好。有人能帮我理解这个问题吗?

DLT管道在初始化状态下不应被击穿

EN

回答 1

Stack Overflow用户

发布于 2022-11-29 10:34:49

问题是您的DLT程序结构不正确。为DLT编写的程序应该是通过设计声明性的,但在您的示例中,您是在顶层执行操作,而不是在标记为@dlt.table的函数中执行操作。当DLT管道启动时,它通过计算所有代码来构建执行图,并标识用@dlt注释标记的执行图的顶点(您可以看到您的函数被多次调用,正如解释的here)。而且,由于您的代码具有使用spark.read.jdbc读取所有数据、与宇宙交互等副作用,所以初始化步骤非常慢。

为了说明这个问题,让我们看看您的代码结构。现在你有以下几点:

代码语言:javascript
复制
def read(...):
  1. Perform read via `spark.read.jdbc` into `df`
  2. Perform operations with Cosmos DB
  3. Return annotated function that will just return captured `df`

因此,项目1和2将在初始化阶段执行,而不是在执行实际管道时执行。

为了缓解这个问题,您需要将结构更改为:

代码语言:javascript
复制
def read(...):
  1. Return annotated function that will:
    1. Perform read via `spark.read.jdbc` into `df`
    2. Perform operations with Cosmos DB
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74399160

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档