Databricks 快速参考与速查表
2026/7/30 00:07:46
AI 翻译于 2026/7/30 00:11:46 · 使用 Qwen3.6 35B (fast, default)
一份简明的 Databricks 平台指南,涵盖核心概念(湖仓一体、Delta Lake)、工作区基础(Notebook、集群、作业),以及适用于日常数据工程与分析任务的 Spark SQL / DBFS / Delta 关键操作。
Databricks 快速参考与速查表
入门指南
集群与计算配置
| 集群类型 | 选择集群模式(单节点、标准高吞吐量、高并发) | | Worker Nodes | 工作节点数量;自动扩缩容可控制最小/最大工作节点数 | | Runtime Version | 建议使用支持 Photon 的运行时以提升性能 | | 初始化脚本 | 节点启动时运行的 Python 脚本 |
集群配置基础
- 集群模式:根据工作负载类型进行选择(开发、生产、机器学习)
- Worker Nodes:在配置的上下限之间自动扩缩容,以实现成本效益
- Photon:启用以加速大规模查询
- Job Clusters:最适合一次性或计划任务工作负载 —— 无初始预付费成本
Databricks SQL 与数据中心仓库服务
-- Create a table in Unity Catalog
CREATE TABLE catalog.schema.table_name (
id BIGINT,
name STRING,
value DOUBLE
);
-- Query via Serverless SQL Warehouse
SELECT * FROM catalog.schema.table_name LIMIT 10;
-- Change warehouse / query context
ALTER WAREHOUSE warehouse_name SET AUTOSTOP = 30 MINUTE;
关键要点:Databricks SQL 仓库服务(标准版或无服务器版)用于处理商业智能/SQL。
Delta Lake 核心功能
| 读取表名 | spark.read.format("delta").load("/path/to/table") |
| 写入 (overwrite) | df.write.format("delta").mode("overwrite").save("/path/to/table") | | **OPTIMIZE & ZORDER** | OPTIMIZE table_name; ZORDER BY(col1, col2); |
Delta 时间旅行
SELECT * FROM catalog.schema.table_name TIMESTAMP AS OF '2025-08-01';
ZORDER BY 将相关信息聚合在相同的文件集中,大幅加快过滤查询的速度。
Spark SQL Cheat Sheet
DataFrame 创建与常见模式
df = spark.read.format("csv").option("header", "true").load("/path/to/file.csv")
df = spark.read.json("/path/to/.parquet()
df = spark.read.parquet("/path/to/data/")
# SQL-Style Querying
spark.table(("catalog.schema.table_name"))
spark.sql("SELECT catalog.schema.table_name.createOrReplaceTempView("t")
results = spark.sql("SELECT col1, COUNT(*) FROM t GROUP BY col1")
常见 Spark Transformations
| select | 选择/重命名列 | df.select("col1", "col2") |
| filter | 过滤行 | df.filter(df.col > 10) |
| groupBy | 聚合分组 | df.groupBy("region").count() |
| join | 组合 DataFrames | df1.join(df2, "id") |
| orderBy | 排序结果 | df.orderBy(desc("date")) |
| withColumn | 添加/修改列 | df.withColumn("x2", df.x * 2) |### 常用 Spark 聚合
from pyspark.sql.functions import col, avg, count, sum, max, min, when
df.agg(
avg("price").alias("avg_price"),
count("*").alias("total_records"),
sum("quantity").alias("total_qty"),
max("date").alias("latest_day")
)
-- 条件聚合(对应 SQL 的 CASE WHEN)
df.withColumn("tier", when(df.amount > 1000, "high").otherwise("low"))
Unity Catalog (UC) 导航
| 对象 | 语法/模式 |
|---|---|
| Metastore | spark.conf.set("spark.sql.catalog.spark_catalog", "com.databricks.backend.catatalogs.catalyst.CatalogHandler") |
| Schema / Database | USE CATALOG my_catalog; USE SCHEMA my_schema; |
| Table | catalog.schema.table_name |
| View | CREATE VIEW catalog.schema.view AS SELECT ... |
Unity Catalog 权限 (GRANT/REVOKE)
-- Grant table read access
GRANT SELECT ON TABLE catalog.schema.table TO role_name;
-- Grant schema usage
GRANT USE SCHEMA ON SCHEMA catalog.schema TO role_name;
-- Revoke
REVOKE ALL ON TABLE catalog.name FROM role_name;
Unity Catalog 提供集中化治理。Access control, data discovery, audit logs.
Notebook & Dev Tip
| Feature | Shortcut / Tip |
|---|---|
| Run cell | Shift + Enter |
| Auto-complete | Ctrl + Space (or Cmd + Space on Mac) |
| SQL cell | Start with %sql magic. |
| Python cell | python |
| Multi-language | Use cell headers to select language per cell |
Cell Magics
%s -- switch cell language to SQL
%python -- switch to Python
%s -- shell commands
%md -- Markdown rendering
%fs -- Databricks File System operation
Delta Live Tables (DLT)
@dlt.Table def data(): return ( spark.readStream.format("delta").load("/path/to/source") .filter(col("status") == "active") )
| Feature | Shortcut / Tip |
|---|---|
| Run cell | Shift + Enter |
| Auto-complete | Ctrl + Space (or Cmd + Space on Mac) |
| SQL cell | Start with %sql magic |
| Python cell | Default; start with %python explicitly if needed |
| Multi-language | Use cell headers to select language per cell |
Cell. Magics
%s -- switch cell language to SQL
%python -- switch to Python
%s -- shell commands
%md -- Markdown rendering
%fs -- Databricks File System operation
Delta Live Tables (DLT)
@dlt.Table def data(): return ( spark.readStream.format("delta").load("/path/to/source") .filter(col("status") == "active") )```python
Listing files
dbutils.fs.ls("/path/to/dir")
Copying
dbutils.fs.cp("file:/local/path", "/dbfs/mnt/gcs/bucket/folder")
Creating directories
dbutils.fs.mkdirs("/dbfs/tmp/new_folder")
Downloading from external storage (mount example)
dbutils.fs.mount( source="gs://bucket-name/path", mount_point="/mnt/gs/bucket-name", extra_configs={"fs.gs.auth.service.account.json.keyfile": "…"} )
---
## 关键要点
- **集群模式**:开发环境请使用标准型集群,BI/共享 SQL 数据仓库请使用高并发型集群。尽可能使用搭载 Photon 加速的运行环境。
- **Delta Lake**是底层存储引擎;善用**时间旅行(Time Travel)**特性以及 **OPTIMIZE/ZORDER** 命令来提升性能。
- **Unity Catalog**实现集中化治理管控(metastore → catalog → schema → table)。
- **Notebook 单元格**支持通过 `%sql`、`%python` 等指令进行多语言切换——按需以内联形式使用即可。
- **DLT 与工作流**可将 Notebook 转化为生产就绪的定时管道,并具备清晰的数据血缘关系与 SLA。
学习地图
Databricks 学习路线图
第一阶段 — 基础
- 理解湖仓一体(Lakehouse)架构概念
- 探索 Delta Lake 基础知识(ACID 事务、时间旅行、模式执行)
- 配置 Databricks 工作区(社区版或云试用版)
第二阶段 — 工作区导航
- 创建并运行 notebooks(pySpark / SQL / Python / Scala)
- 配置和管理计算集群(无服务器与全功能、作业集群)
- 掌握 DBFS(Databricks 文件系统)基础操作
第三阶段 — Spark & SQL 操作
- 使用 pySpark 编写 Spark DataFrame 转换逻辑
- 运行 Delta Lake 命令(
delta,create table,MERGE INTO) - 使用 Databricks SQL Warehouse 进行仪表板展示和即席查询
第四阶段 — 自动化与治理
- 调度作业(基于 notebooks 和任务的流程)
- 启用 Unity Catalog 以实现数据治理和访问控制
- 使用 Delta Live Tables (DLT) 自动化 ELT 流水线
动手实践——分步指南
- 注册 Databricks 社区版或免费云试用版。
- 登录工作区并创建一个新的笔记本——选择 pySpark 作为编程语言。
- 从笔记本创建一个通用集群,选择运行时版本“Databricks Runtime 14.x”(或最新的 ML/Standard 版),然后将其附加。
- 将 CSV 文件上传到 DBFS:直接拖拽到侧边栏,或运行以下命令:
dbutils.fs.put("/FileStore/my_data.csv", ...)。 - 将数据加载为 DataFrame:
df = spark.read.csv("/FileStore/my_data.csv", header=True, inferSchema=True)。使用display(df.head(10))显示结果。 - 将其注册为 Delta 表:
df.write.format("delta").mode("overwrite").saveAsTable("my_customers)`。 - 在另一个单元格中使用 Spark SQL 查询该表:
%sql SELECT * FROM my_customers WHERE age > 25 ORDER BY revenue DESC LIMIT 10; - 通过修改数据并查询历史版本来测试时间旅行功能:
SELECT * FROM my_customers FOR SYSTEM_TIME AS OF timestamp('2024,01')。 - 创建 MERGE(Upsert)操作:运行 Delta 的
MERGE INTO语句,根据匹配条件更新或插入行。 - 将笔记本配置为 Job 调度:进入 Jobs > New Job,将触发器(Trigger)设置为“Schedule”(例如每天凌晨 2 点),并将您的笔记本添加为任务节点。
- 创建 SQL Warehouse——使用 Databricks SQL Editor 连接,并基于查询结果构建一个简单的数据看板。
三大推荐资源
- 1Databricks Docs — Delta Lake Quickstart
Official Delta Lake documentation covering table creation, merges, time travel, and best-practice patterns.
https://docs.databricks.com/en/delta-lake/index.html
- 2Databricks Academy — Getting Started with Databricks Community Edition
Free, self-paced training that walks you through workspaces, notebooks, clusters, and hands-on labs.
https://www.databricks.com/learn/training/community-edition
- 3Apache Spark SQL Language Reference
The canonical reference for Spark SQL syntax, DataFrame APIs, and built-in functions (runs identically on Databricks).
https://spark.apache.org/docs/latest/sql-programming-guide.html
链接由 AI 推荐——使用前建议快速核实。
