在 Databricks 上审查生产代码,无论是作业、SQL 查询还是 Notebook,通常都非常耗时。特别是当代码涉及多个表依赖关系时,快速评估其是否符合最佳实践就变成一项极其繁琐的任务。基于 Agentic AIDatabricks 工作负载分析器应运而生,它通过集成发现功能和最佳实践检查,能够显著减少分析时间,从而提高效率并促进代码质量。这篇文章将深入探讨这项技术的原理、架构、优势以及如何在 Databricks 上实现自动化最佳实践。

工作负载分析与效率提升

传统的 工作负载分析 方法,需要人工审查代码,识别表类型、大小、分区、聚簇等信息,并检查是否执行了必要的维护操作,例如 ANALYZEVACUUMOPTIMIZE。这种方法不仅耗时,而且容易出错,尤其是在工程师不熟悉原始代码库的情况下。文章指出,核心挑战在于对 M 个表应用 N 个诊断检查,导致时间复杂度达到 O(M × N),这会严重拖慢发现过程,并增加理解工作负载所需的工作量。

Agentic AI 工作负载分析器 旨在解决这一难题。它允许工程师使用自然语言直接查询代码,并获得关于代码的相关、有针对性的答案。例如,工程师可以询问:“哪些表被分区了?”或者“这张表的大小是多少?”分析器会立即返回相关信息,无需手动查找和分析。据称,该工具能够将分析时间缩短高达 95%,极大地提高了效率。

核心架构解析:UC Toolkit 和 LangGraph 的协同

Agentic AI 工作负载分析器 的核心架构围绕几个关键组件展开。首先,用户提交 SQL 查询进行分析。大型语言模型(LLM)处理查询并识别所有表引用。对于每个表,Agent 调用 Unity Catalog 函数来检索表历史信息(使用 Describe History 函数)和表属性信息(使用 Describe Properties 函数)。

关键之处在于,整个工作流程由 UC Toolkit 和 LangGraph 的 create_react_agent 框架协调。LangGraph 提供了一种结构化的方式来构建 Agent,使其能够进行推理、规划和采取行动。UC Toolkit 则提供了与 Unity Catalog 交互的便捷工具。所有函数的结果都存储在 Databricks Lakebase 中,Lakebase 充当 LLM 的内存。Agent 利用 Lakebase 中的记忆以及访问工具的权限,来提供全面的答案。此外,通过使用 Databricks Vector Search 实现 RAG(检索增强生成)方法,可以提供更细粒度的、特定于 Databricks 的响应。用户还可以提出关于表的后续问题,例如关于属性或历史记录,这通过使用 Streamlit 在 Databricks Apps 中构建的多轮聊天应用程序来实现。

例如,一个用户提交了一个复杂的 SQL 查询,该查询涉及 10 个表,其中一些表非常大,并且具有复杂的聚簇配置。使用传统方法,分析这个查询可能需要几个小时,甚至几天。但是,使用 Agentic AI 工作负载分析器,用户可以简单地提出问题,例如“这个查询中最大的表是哪个,它的聚簇键是什么?”分析器会在几秒钟内返回答案,并提供关于如何优化查询的建议。

Databricks Mosaic AI 的力量:基础模型与 Governed Tools

Agentic AI 工作负载分析器 的强大功能离不开 Databricks Mosaic AI 的支持。它利用 Databricks 托管端点上的 Meta Llama 模型。

from databricks_langchain import ChatDatabricks

llm = ChatDatabricks(endpoint="databricks-meta-llama-3-3-70b-instruct")

这使得分析器能够访问最先进的语言模型,该模型理解 SQL 和 Delta Lake 的概念,而无需管理基础设施或担心安全性问题。

此外,Mosaic AI 的一个强大功能是能够在 Unity Catalog 中创建 Governed Tools。文章中提到了两个注册在 Unity Catalog 中的 Python 函数:

CREATE or replace FUNCTION dbdemos.retail_sap.get_history (...)
CREATE or replace FUNCTION dbdemos.retail_sap.get_properties_sql_exec (...)

这些函数允许 Agent 检索表历史记录(包括版本信息和执行的操作)以及提取详细的表属性(例如大小、类型、优化设置和所有权)。

Databricks 的 Unity Catalog Governed Tools 提供了全面的企业级能力,使其成为理想的解决方案:

  • 安全性与治理: Databricks 确保所有工具访问都严格遵守 Unity Catalog 权限和策略,从而为数据资产提供强大的保护。
  • 可观察性: 通过 Databricks,每个工具调用都会被彻底记录和追踪,从而实现对数据操作的完全可见性。
  • 可重用性: Databricks 允许跨不同的应用程序和工作区无缝访问工具,从而最大限度地提高投资回报。
  • 简化开发: Databricks 授权团队通过将复杂逻辑封装在 LLM 可以轻松调用的函数中,从而加速 AI 计划。

例如,一家大型零售公司使用 Agentic AI 工作负载分析器 来分析其每日销售数据管道。该管道涉及数百个表,并且经常出现性能问题。通过使用分析器,他们能够快速识别导致瓶颈的表,并采取纠正措施,例如重新分区表或优化 SQL 查询。这显著提高了管道的性能,并节省了大量成本。

AI 工作流编排与 ChatAgent 的妙用

在 Databricks 上部署 Agentic AI 工作负载分析器 的最佳方法是使用 Databricks 提供的 ChatAgent 抽象。

from databricks.agents import ChatAgent
from databricks_langchain import ChatDatabricks, UCFunctionToolkit

# Point at your model serving endpoint
llm = ChatDatabricks(endpoint="databricks-claude-3-7-sonnet")

# Grab whatever tools you need from the UC Function Registry
tools = UCFunctionToolkit(["***"]).tools

# Instantiate the agent which will call the tools for the SQL query
agent = ChatAgent(
    llm=llm,
    tools=tools,
    system_message="Execute all the necessary tools for each of the tables in the SQL query",
    streaming=True,
    confirm_tool_calls=True
)

ChatAgent 提供了一个完全托管的 Agent 框架,支持推理、工具调用和动态交互。它允许 Agent:

  • 推理用户输入并确定何时需要调用工具。
  • 通过内置的函数调用来采取行动并调用适当的工具。
  • 观察从工具执行返回的结果。
  • 根据更新的上下文规划下一步行动。

这种架构支持透明、可控且高度可观察的逐步交互流程,并完全集成到 Databricks 的托管基础设施、MLflow 跟踪和部署生态系统中。

例如,一个数据工程师可以使用 ChatAgent 来创建一个 Agent,该 Agent 能够自动检测和解决数据质量问题。当 Agent 检测到数据质量问题时,它会自动调用适当的工具来修复问题,例如使用 ANALYZE 命令更新统计信息或使用 OPTIMIZE 命令压缩文件。

Lakebase:LLM 的强大记忆

LLM 内存 是 Agentic 架构的一个重要组成部分。它是 Agent 用于存储对话的临时或持久存储。Databricks Lakebase 提供了短期记忆功能,允许 Agent:

  • 跟踪对话历史记录。
  • 在多轮对话中保持上下文。
  • 在回答新问题时引用先前的工具结果。

这对于创建自然的对话体验至关重要,因为它允许助手回顾先前的交互并在此基础上进行构建。

例如,用户可以首先询问:“这张表的分区键是什么?”然后,用户可以继续询问:“这个分区键是否适合查询?”Agent 可以记住之前的提问,并根据之前的回答来回答后续的问题,而无需用户重复提供信息。

Agentic AI 与自动化最佳实践

Agentic AI 的应用极大地推动了 自动化最佳实践 的实现。在 Databricks 工作负载分析 方面,它不仅仅是一个简单的代码审查工具,更是一个智能助手,能够理解用户的意图,并主动提供优化建议。例如,如果 Agentic AI 发现一个表缺少分区,它会主动建议添加分区,并提供分区键的选择建议。如果发现存在小文件问题,它会建议运行 OPTIMIZE 命令进行文件合并。这些建议都是基于 Databricks 的最佳实践,能够帮助用户编写更高效、更稳定的代码。

总结:

Agentic AI 工作负载分析器 是一个强大的 Databricks 工具,可以自动审查生产代码,这通常是一个耗时的手动过程,尤其是在处理大量表依赖项时。该工具提供自动化的发现和最佳实践检查,可显著减少分析时间,据称可达 95%。它解决了表分析的关键方面,包括类型、大小、分区、聚簇、维护和小型文件问题,同时确保遵守 Databricks 的最佳实践。通过自动化数据理解、优化实践和主动解决问题,Agentic AI 工作负载分析 器可加快分析速度、提高资源利用率并实现更高的整体自动化。它通过将 自动化最佳实践 融入到代码审查流程中,帮助用户构建更健壮、更高效的数据管道,从而提高整体的业务价值。通过利用 Agentic AI 技术,Databricks 不仅提升了开发效率,也降低了维护成本,为企业级数据平台的构建开辟了新的可能性。