【问题标题】: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 创建了一个任务。
点击+图标并为下一个笔记本创建另一个任务。给笔记本和依赖项第一个任务如下所示。
你可以看到这样的任务。
运行此作业,您可以看到当我们在第一个中给出值错误时,第二个任务没有执行(增量表未更新).
如果第一个任务没有给出任何错误,则将执行第二个任务(增量表已更新).
第一个任务:
第二个任务:
您可以每天在特定时间安排一次或两次此作业,当更新增量表时,它将执行另一个笔记本。