Databricks:使用Scala在工作流任务之间共享信息

p3rjfoxz  于 5个月前  发布在  Scala
关注(0)|答案(1)|浏览(43)

在Databricks中,我希望有一个包含多个任务的工作流。我希望在这些任务之间传递信息。根据https://learn.microsoft.com/en-us/azure/databricks/workflows/jobs/share-task-context,这可以通过Python使用

dbutils.jobs.taskValues.set(key = 'name', value = 'Some User')

字符串
并获取第二个任务

dbutils.jobs.taskValues.get(taskKey = "prev_task_name", key = "name", default = "Jane Doe")


然而,我使用Scala 2.12编写的jar库来完成我的任务。
在Scala中有什么方法可以实现这一点吗?或者有什么变通的方法吗?

vm0i2vca

vm0i2vca1#

是的,根据documentation,Scala不支持taskValues子功能。
但是,如果您仍然希望获取任务周围的值,则可以创建全局临时视图并访问它们。
在下面的示例中,我尝试使用Scala notebook,在构建时可以将相同的Scala代码添加到您的Notebook中。
输出量:


的数据

  • *scalatask1**中的代码
case class taskValues(key: String, value: String)

val df = Seq(new taskValues("task1key1", "task1key1value"), new taskValues("task1key2", "task1key2value"), new taskValues("task1key3", "task1key3value")).toDF

df.createOrReplaceGlobalTempView("task1Values")

字符串
验证码scalatask

spark.sql("select * from global_temp.task1values;").filter($"key"==="task1key2").select("value").collect()(0)(0)


在这里,您将获得task1表并筛选出所需的键。


相关问题