【问题标题】:Databricks - wait for delta table change and run jobDatabricks - 等待增量表更改并运行作业
【发布时间】:2022-08-02 20:54:41
【问题描述】:

我是数据分析师,所以我只能访问 Databricks(创建笔记本和工作)。

我有一个每天更新(合并新数据)的增量表。管道由管理员创建。当这张表在更新后我想触发笔记本或工作。

我的访问权限甚至可能吗?我试图创建changeDataFeed,然后呢? 我不知道如何从 changeDataFeed 转移到实际触发其他东西。

我的代码 sn-p (基于不同的问题):

df = spark.readStream \\
     .format(\"delta\") \\
     .option(\"readChangeFeed\", \"true\") \\
     .option(\"startingVersion\", \"latest\") \\
     .table(tableName) \\
     .filter(\"_change_type != \'update_preimage\'\")

在我查询 df 后,streamReader 正在读取数据,但我想运行另一个笔记本或作业。

其次,我不想一直运行这个 readStream,因为数据每天合并一次(大约早上 7 点到 9 点)。

怎么做?

    标签: databricks azure-databricks


    【解决方案1】:

    您可以使用同一工作中的任务在您的 Delta 表更改后执行其他笔记本。

    这是名为 Delta_Notebook 的 Delta 表的示例笔记本代码。

    def isdeltaupdated():
        #Your code to check delta table updated or not
        #if updated then we can proceed to run next notebook so return true
        #If not updated then create Value error in this notebook by which the other notebook cannot run
        return False #for sample
    if (isdeltaupdated()):
        print("ok")
    else:
        raise ValueError("Not updated")
        #Raising error so that it won't run the next task (notebook)
    

    首先为此创建一个作业并打开该作业并转到它的任务。

    您可以看到为Delta_notebook 创建了一个任务。



    点击+图标并为下一个笔记本创建另一个任务。给笔记本和依赖项第一个任务如下所示。



    你可以看到这样的任务。


    运行此作业,您可以看到当我们在第一个中给出值错误时,第二个任务没有执行(增量表未更新).





    如果第一个任务没有给出任何错误,则将执行第二个任务(增量表已更新).



    第一个任务:


    第二个任务:

    您可以每天在特定时间安排一次或两次此作业,当更新增量表时,它将执行另一个笔记本。

    【讨论】:

      猜你喜欢
      • 2017-08-15
      • 1970-01-01
      • 2019-02-09
      • 2022-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-18
      • 2019-05-24
      相关资源
      最近更新 更多