Databricks 支持生命周期

作为Azure Databricks创新承诺的一部分,平台和运行时功能可能会被新功能停用并取代。 Databricks Runtime 版本也会按常规计划进行停用和替换。 此页面列出了停用阶段,以及有关平台功能和 Databricks Runtime 版本的相应支持的详细信息。 它还包括用于检测使用遗留 Databricks Runtime 版本的群集和作业的 SQL 查询。

有关预览和发布类型的信息,请参阅 Azure Databricks 预览版

平台功能生命周期

下表介绍了Azure Databricks平台功能停用阶段:

阶段 说明 支持 迁移说明
遗留 该功能仍然可用,但有更新、更好的功能或方法来完成此功能提供的任务。 此标签指示将在未来某个日期停用。 已满。 支持和文档可用。 建议迁移到新的替代功能或完成任务的新方法,但不需要立即迁移
已弃用 该功能不再处于积极开发状态。 将不再发布更新。 该功能即将停用,因此你需要制定一个计划来停止使用该功能并过渡到替代功能。 已满。 该功能不再更新,但支持和文档仍可用。 强烈建议迁移到新的替换功能或完成任务的新方法,因为重要的更新将不再适用
停止支持 (EoS) 该功能不再处于积极开发阶段,并且不再提供正式支持。 无。 文档可能仍然存在,但已存档,不再进行维护。 急需迁移到新的替换功能或完成任务的新方法,因为重要更新不再适用,并且不再提供对可能出现的问题的支持
生命周期终止 (EoL) 此功能已从 Databricks 产品中完全移除。 必须迁移到新的替换功能或完成任务的新方法,因为该功能不再可用。 此时,迁移可能非常困难。

Databricks Runtime 支持生命周期

每个 Databricks Runtime 版本都会先发布一个供早期评估的 Beta 版,然后再正式发布为正式可用版本(GA)。 在正式发布 (GA) 功能开发阶段(约六个月),Azure Databricks 会在同一版本号下发布新功能和修复。 群集在重启时接收更新。 在功能开发阶段结束后,该版本将转入为期三年的长期支持(LTS)阶段。 有关支持的版本,请参阅 Databricks Runtime 发行说明版本和兼容性

不支持的 Databricks Runtime 版本的工作负荷可能会继续运行,但Azure Databricks不提供支持或修复。

注释

在 Databricks Runtime 19 之前,Azure Databricks发布运行时作为次要功能版本(例如 18.0、18.1、18.2),每个版本都有自己的 Beta 版和 GA 版本。

阶段 说明
Beta 版本 可在正式发布前进行早期评估。 不建议用于生产用途。 不支持 SLA。
GA(功能开发) 提供了重大稳定性和安全修复。
Azure Databricks在功能开发阶段的相同版本号下发布新功能和修补程序,持续约六个月。
受支持的版本发布在 受支持的 Databricks Runtime 版本
LTS 功能开发阶段结束后,版本将转换为长期支持(LTS)。 重大稳定性和安全性修复将在三年内持续回移植。
支持的 LTS 版本在 支持的 Databricks Runtime 版本中发布。
停止支持 (EoS) 如果版本不受支持:
  • 在这些版本上运行的工作负荷不会获得 Databricks 支持。
  • 修复程序没有被向后移植。
  • 创建或更新计算资源时,它不再能够通过 UI 进行选择。

支持终止日期是 GA 发布日期后的三年。
不再支持的版本已发布在终止支持 Databricks Runtime 发行说明中。
生命周期终止 (EoL) 一旦版本到达生命周期结束,它就会从Azure Databricks环境中删除,并且它变得不可用。 无法启动新工作负载,并且这些版本上运行的现有工作负荷会失败。 必须将工作负荷迁移到受支持的运行时版本。
Azure Databricks 尽最大努力将生命周期结束日期设定为支持终止日期之后六个月。 但是,Databricks 保留在支持结束后随时完全删除发布版本的权利,而无需事先通知。

检测旧版 Databricks Runtime 群集

此临时视图汇总了运行 Databricks Runtime 版本 10.4 或更低版本的群集的 Databricks Runtime 群集使用情况。 它聚合过去 90 天的使用情况,包括工作区信息、群集标识符、Databricks Runtime 版本、使用情况单位和 Databricks 单元(DBU)的总使用量。

创建legacy_dbrs视图
CREATE OR REPLACE TEMP VIEW legacy_dbrs AS
WITH clusters_dbr_versions AS (
  SELECT
    account_id,
    workspace_id,
    cluster_id,
    cluster_name,
    owned_by,
    dbr_version,
    TRY_CAST(regexp_extract(dbr_version, '(\\d+)\\.(\\w+)?(?:\\.(\\w+))?', 1) AS INT) AS major_version,
    TRY_CAST(regexp_extract(dbr_version, '(\\d+)\\.(\\w+)?(?:\\.(\\w+))?', 2) AS INT) AS minor_version,
    ROW_NUMBER() OVER(PARTITION BY account_id, workspace_id, cluster_id ORDER BY change_time DESC) AS rnk
  FROM
    system.compute.clusters
  QUALIFY rnk=1
),
usage AS (
  SELECT
    account_id,
    workspace_id,
    usage_metadata.cluster_id AS cluster_id,
    usage_unit,
    ROUND(SUM(usage_quantity), 2) AS total_usage_dbu,
    MAX(usage_date) as last_seen_date
  FROM
    system.billing.usage
  WHERE
    usage_metadata.cluster_id IS NOT NULL AND
    usage_date > CURRENT_DATE() - INTERVAL 90 DAYS
  GROUP BY ALL
),
workspace_info AS (
  SELECT
    account_id,
    workspace_id,
    workspace_name,
    workspace_url
  FROM
    system.access.workspaces_latest
)
SELECT
  cdv.workspace_id,
  wi.workspace_name,
  wi.workspace_url,
  cdv.cluster_name,
  cdv.cluster_id,
  cdv.owned_by,
  cdv.dbr_version,
  total_usage_dbu,
  usage_unit,
  last_seen_date
FROM
  clusters_dbr_versions cdv
    INNER JOIN usage u USING (workspace_id, cluster_id)
    LEFT JOIN workspace_info wi USING (workspace_id)
WHERE
  major_version < 10 OR (major_version = 10 AND minor_version < 4)
GROUP BY ALL
ORDER BY
  workspace_id, total_usage_dbu DESC;

若要查看每个群集的旧 Databricks Runtime 使用情况,请查询刚刚创建的视图。

SELECT * FROM legacy_dbrs;

若要查看跨工作区和 Databricks Runtime 版本的聚合群集使用情况,请使用以下查询。 这有助于确定哪些 Databricks Runtime 版本仍在使用、运行每个版本的群集数以及 DBU 中的总使用量。

SELECT
  dbr_version,
  workspace_id,
  COUNT(DISTINCT cluster_id) total_clusters,
  SUM(total_usage_dbu)  AS total_usage_dbu
FROM legacy_dbrs
GROUP BY dbr_version, workspace_id
ORDER BY dbr_version, workspace_id

检测旧版 Databricks Runtime 作业

使用此查询可检索过去 90 天内执行的所有作业,其中最近的运行使用了早于 10.4 的 Databricks Runtime 版本。 这有助于识别需要升级的工作负荷。

使用旧版的 DBR 查询作业
%sql
with latest_jobs AS (
  SELECT
    *,
    ROW_NUMBER() OVER(PARTITION BY workspace_id, job_id ORDER BY change_time DESC) as rn
  FROM system.lakeflow.jobs
  QUALIFY rn=1
),
latest_clusters AS (
  SELECT
    *,
    ROW_NUMBER() OVER(PARTITION BY workspace_id, cluster_id ORDER BY change_time DESC) as rn
  FROM system.compute.clusters
  QUALIFY rn=1
),
job_tasks_exploded AS (
  SELECT
    workspace_id,
    job_id,
    EXPLODE(compute_ids) as cluster_id
  FROM system.lakeflow.job_task_run_timeline
  WHERE period_start_time >= CURRENT_DATE() - INTERVAL 90 DAY AND ARRAY_SIZE(compute_ids) > 0
  GROUP BY ALL
),
workspace_info AS (
  SELECT
    account_id,
    workspace_id,
    workspace_name,
    workspace_url
  FROM
    system.access.workspaces_latest
),
clusters_with_dbr AS (
  SELECT
    t1.*,
    t2.cluster_name,
    t2.owned_by,
    t2.dbr_version
  FROM job_tasks_exploded t1
    INNER JOIN latest_clusters t2 USING (workspace_id, cluster_id)
)
SELECT
  wi.account_id,
  wi.workspace_id,
  wi.workspace_name,
  wi.workspace_url,
  latest_jobs.name,
  cwd.job_id,
  cwd.cluster_id,
  cwd.cluster_name,
  cwd.dbr_version
 FROM clusters_with_dbr cwd
 JOIN workspace_info wi ON cwd.workspace_id = wi.workspace_id
 LEFT JOIN latest_jobs USING (workspace_id, job_id)
 WHERE dbr_version RLIKE '^([1-9]\\.|10\\.[0-3]\\.)'