首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何控制用于管道开发的Databricks Delta Live (DLT)创建的顺序?

如何控制用于管道开发的Databricks Delta Live (DLT)创建的顺序?
EN

Stack Overflow用户
提问于 2022-08-02 16:29:32
回答 1查看 270关注 0票数 1

我正在开发Databricks管道,用Python编写DLT。我想了解如何控制管道创建DLT的顺序。

当前为,管道试图按照写入顺序创建每个DLT,如果某些数据不可用,则会导致错误。让我澄清:

代码语言:javascript
复制
@dlt.table
def table1():
  return spark.sql("SELECT a,b,c FROM table_A") 


@dlt.table
def table2():
  return spark.sql("SELECT x,y,z FROM table_B") 


@dlt.table
def table3():
  res1 = dlt.read("table1")
  res2 = dlt.read("table2")
  
  if "a" in res1.schema.names and "x" in res2.schema.names:
    return ...
  elif "a" in res1.schema.names
    return ...
  elif "x" in res2.schema.names
    return ...
  else return ...

我希望管道只创建table3,在创建DLTs、table1或/和table2之前先检查来自其他源的数据是否可用。

这有可能吗?还是我误解了管道应该如何工作?您可以假设数据在某个时候会出现,但是有可能还没有加载到数据库中。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-04 12:58:01

当DLT启动管道时,它会计算每个函数,从而创建依赖关系图。然后根据检测到的依赖顺序执行该图。这种执行不依赖于实际数据的存在--它只取决于输入数据的存在,等等。

因此,在您的示例中,table3依赖于table1table2,因此它们将首先执行(但需要有table_Atable_B),然后执行table3 (如果使用批处理或流管道,这与流管道中的所有节点可以同时执行一样)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73210826

复制
相关文章

相似问题

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