【问题标题】:DevOps for Azure Databricks JobsAzure Databricks 作业的 DevOps
【发布时间】:2020-11-27 11:18:56
【问题描述】:

我正在尝试在 Azure Databricks 上实施 DevOps。

我已经完成了 databricks 笔记本和 dbfs 文件的 devops 实施。

我的集群上确实有许多按计划运行的数据块作业。 其中一些作业指向笔记本文件,少数指向 dbfs 位置中的 jar 文件。

有没有办法在 azure databricks 作业上实现 devops 流程,以便 DEV 中任何作业的任何更改都将调用构建管道并将其部署到 PROD databricks 实例中。

首先我想知道是否可以在 azure databricks 作业上实施 devops。

感谢任何潜在客户!

【问题讨论】:

  • 您的作业是作为笔记本实现的,还是作为 jars 或 python 文件实现的?
  • 大部分使用notebook文件,很少使用jar文件

标签: azure azure-devops azure-databricks


【解决方案1】:

为了有效地做到这一点,我建议使用Databricks Terraform provider - 在这种情况下,definition of the job 可以存储在 Git 或类似的东西中,然后很容易与 CI/CD 系统集成,例如Azure DevOps、GitHub Actions 等。

环境之间的差异可能是编码为不同文件的变量,不同环境的变量等,因此您可以在环境之间重复使用主要代码,如下所示:

provider "databricks" {
  host  = var.db_host
  token = var.db_token
}

data "databricks_spark_version" "latest" {}
data "databricks_node_type" "smallest" {
  local_disk = true
}

resource "databricks_job" "this" {
  name = "Job"

  new_cluster {
    num_workers   = 1
    spark_version = data.databricks_spark_version.latest.id
    node_type_id  = data.databricks_node_type.smallest.id
  }

  notebook_task {
    notebook_path = "path_to_notebook"
  }

  email_notifications {}
}

附:理论上,您可以执行一些周期性任务,从原始环境中提取作业定义,并检查作业定义是否已更改,并将更改应用到另一个环境。您甚至可以通过diagnostic logs 跟踪作业定义的更改,并将其用作触发器。

但这一切都只是小技巧——最好还是使用 Terraform。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-23
    • 1970-01-01
    • 2021-10-21
    • 2022-10-12
    • 2023-03-17
    • 1970-01-01
    • 2020-08-18
    • 2019-06-10
    相关资源
    最近更新 更多