%python
import pandas as pd
# Load sample data and display the first few rows
df = spark.read.format("csv").option("header","true").load("/databricks-datasets/airlines/part-00000")
pd_df = df.limit(5).toPandas()# Convert to Pandas DataFrame
display(pd_df)# Works in Databricks技术支持
%scala
// Reading and displaying data in Scalaval data = spark.read.option("header","true").csv("/databricks-datasets/airlines/part-00000")// Display as a table in Databricks
display(data)技术支持
Databricks Notebook 中的 Scala 代码。图片来源:作者。
在 Databricks Notebook 中编写 R 代码
您也可以在 Databricks Notebook 的单元中使用 %r 魔法命令编写 R 代码。
%r
# Load a sample dataset in R
library(SparkR)
df <- read.df("/databricks-datasets/airlines/part-00000", source ="csv", header ="true")
head(df)技术支持
%md
# Data Exploration Notebook
This notebook explores airline flight data, providing insights into flight frequency and destinations.
## **Steps:** 1. Load and display the dataset
2. Query data using SQL
3. Generate visualizations技术支持
%python
import pandas as pd
# Load sample data and display the first few rows
df = spark.read.format("csv").option("header","true").load("/databricks-datasets/airlines/part-00000")# Displaying the first 5 rows of a DataFrame
display(df.limit(5))技术支持
%python
# Show the top 5 rows in an interactive table
display(df.limit(5))# Show the top 10 most frequent airline carriers
top_carriers = df.groupBy("UniqueCarrier").count().orderBy("count", ascending=False).limit(10)
display(top_carriers)技术支持
Databricks Notebooks 可与 Delta Live Tables、MLflow、SQL Warehouses 以及 CI/CD 流水线集成,以扩展功能。
在 Databricks 中使用 Delta Live Tables
Delta Live Tables(DLT)通过声明式 ETL 简化数据管道自动化。下方查询在 SQL 中创建一个 Delta Live Table Pipeline。
-- Creating a live table called 'sales_cleaned' that stores cleaned dataCREATE LIVE TABLE sales_cleaned AS-- Selecting all columns where the 'order_status' is 'completed'SELECT*FROM raw_sales
WHERE order_status ='completed';技术支持
-- Select customer_id and calculate total revenue per customerSELECT customer_id,SUM(total_amount)AS revenue
FROM sales_data
-- Group results by customer to get total revenue per customerGROUPBY customer_id
-- Order customers by revenue in descending order (highest first)ORDERBY revenue DESC-- Return only the top 10 customers by revenueLIMIT10;技术支持
# Read raw sales data from cloud storage
df = spark.read.format("csv").option("header","true").load("s3://sales-data/raw/")# Data cleaning and transformation
df_cleaned = df.filter(df["status"]=="completed").dropDuplicates()# Save to Delta Table for analysis
df_cleaned.write.format("delta").mode("overwrite").saveAsTable("sales_cleaned")技术支持
# import librariesfrom sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
import mlflow
# Load and prepare data
df = spark.read.table("loan_data").toPandas()
X_train, X_test, y_train, y_test = train_test_split(df.drop("default", axis=1), df["default"])# Train model
model = LogisticRegression()
model.fit(X_train, y_train)# Log model in MLflow
mlflow.sklearn.log_model(model,"loan_default_model")技术支持
案例三:面向商业智能的临时分析
在市场团队分析客户互动趋势的场景中,可按以下步骤实现:
步骤 1:使用 SQL 查询客户行为数据。
步骤 2:生成交互式可视化。
此流程将通过交互式仪表板加速决策。
%sql-- Count the number of interactions per customer segmentSELECT customer_segment,COUNT(*)AS interactions
FROM user_activity
-- Group by customer segment to aggregate interaction countsGROUPBY customer_segment
-- Order results by interaction count in descending orderORDERBY interactions DESC;技术支持
Databricks 是一个统一的分析平台,可实现数据工程、机器学习与商业分析的集成。该生态系统的核心是 Databricks Notebooks——用于数据探索、模型开发和生产工作流的交互式工作空间。
在本文中,我将向您展示如何开始使用 Databrick Notebooks。如果您完全是新手,建议先参加我们的 Introduction to Databricks 课程,以便了解 Databricks 的来龙去脉,以及它如何实现数据架构的现代化。我们的课程内容全面,涵盖目录管理和数据摄取等多方面知识,不妨一试。
什么是 Databricks Notebooks?
Databricks Notebooks 是基于云的交互式工作空间,支持用户在协作环境中进行数据探索、工程、机器学习与分析。其采用基于单元的执行模型,用户可在离散的代码块(单元)中编写并运行代码。
支持的语言
Databricks Notebooks 支持多语言,您不仅可以选择自己偏好的语言,还能在同一 notebook 中切换语言。支持的语言包括 Python、SQL、Scala 和 R,以上语言我们均提供入门课程。
为促进多语言的互操作性,Databricks 提供了所谓的魔法命令(magic commands):
%python:以 Python 运行单元。%sql:执行 SQL 查询。%scala:处理基于 Scala 的命令。%r:执行 R 代码。关键特性
Databricks Notebooks 不止于传统编码环境,提供以下关键能力:
快速上手 Databricks Notebooks
了解特性是一回事,亲自上手又是另一回事。体验 Databricks 最好的方式就是动手实践。本节将帮助您在 Databricks 工作区中创建、管理与导航 notebooks。随后,您会亲自体会到它的价值。
创建与管理 notebooks
在 Databricks 工作区中,您可以创建新的 notebook,或管理现有的 notebook。我们来看看具体方法。
如何在 Databricks 工作区创建新 notebook
在 Databricks 中创建新 notebook:
Databricks 工作区。图片来源:作者。
创建 Databricks Notebook。图片来源:作者。
选择 Databricks Notebook 的名称与默认语言。图片来源:作者。
导入现有 notebooks
Databricks 支持从多个来源导入 notebooks,例如 GitHub 与 Git 仓库、外部 URL,或本地文件(
.dbc(Databricks 归档)或.ipynb(Jupyter)文件)。按照以下步骤将现有 notebooks 导入 Databricks Workspace:
将现有 notebook 导入 Databricks Workspace。图片来源:作者。
重命名、组织与访问管理
要重命名 Databricks Notebook,点击标题并编辑名称。
您还可以将 notebooks 移动至文件夹,以获得更好的结构化管理。
将 Databricks Notebooks 移动到文件夹。图片来源:作者。
在共享您的 Datbricks Notebook 之前,您可以管理访问与权限,控制谁可以查看、编辑或管理该 notebook。
基础导航与界面概览
在进行 Databricks Notebooks 的动手示例前,我先带您了解一下平台的界面与导航。
工具栏、单元操作与右侧边栏概览
Databricks Notebook 工具栏提供以下快速操作:
运行、编辑、删除或移动单元。
更改单元类型,如 code、markdown、SQL 或 Scala。
设置魔法命令,如
%python或%sql。在 Databricks Notebook 中运行单元。图片来源:作者。
在 Databricks Notebook 中重置变量与执行状态。图片来源:作者。
Databricks Notebook 中的评论。图片来源:作者。
Databricks Notebook 的版本历史。图片来源:作者。
全新 UI 增强
Databricks 推出多项 UI 改进,带来更直观的体验。借助这些增强功能,Databricks Notebooks 为数据专业人士提供更简洁高效的开发环境,包括:
上手实操:编写与运行代码
Databricks Notebooks 提供交互式编码环境,便于编写、执行与记录代码。本节将介绍代码单元、Markdown,以及高效运行代码的方法。
代码单元与 Markdown
Databricks Notebooks 在同一 notebook 中支持包括 Python、SQL、Scala 与 R 在内的多种语言。
在 Databricks Notebook 中编写 Python 代码
在 Databricks Notebook 的单元中使用魔法命令
%python编写 Python 代码。Databricks Notebook 中的 Python 代码示例。图片来源:作者。
在 Databricks Notebook 中编写 SQL 代码
在 Databricks Notebook 中编写 SQL 代码,请使用魔法命令
%sql。如果 notebook 的默认语言设为 SQL,您可以不写%sql直接运行该单元。Databricks Notebook 中的 SQL 代码。图片来源:作者。
在 Databricks Notebook 中编写 Scala 代码
在 Databricks Notebook 的单元中使用魔法命令
%scala编写 Scala 代码。Databricks Notebook 中的 Scala 代码。图片来源:作者。
在 Databricks Notebook 中编写 R 代码
您也可以在 Databricks Notebook 的单元中使用
%r魔法命令编写 R 代码。Databricks Notebook 中的 R 代码。图片来源:作者。
使用 Markdown 单元撰写文档
Markdown 单元用于添加文本、标题、列表及其他文档内容。以下示例展示了如何编写一个 Markdown 单元及其在 Databricks Notebook 中的呈现效果。
运行单元
Databricks Notebooks 支持灵活的代码执行方式,可单独运行或批量运行单元。
执行单个单元与运行全部单元
要运行单个单元,点击该单元中的运行按钮(▶),或使用快捷键:
要执行整个 notebook 中的所有单元:
在 Databricks Notebook 中执行单个单元与运行全部单元。图片来源:作者。
查看输出
Databricks Notebooks 支持多种输出格式,包括表格、图表与日志。例如,下方 Python 代码会显示“airlines”数据集的前 5 行。
在 Databricks Notebook 中查看输入。图片来源:作者。
我们还可以使用 Databricks Notebooks 对单元输出进行可视化。例如,下方 Python 代码会选出最常见的 10 家航空承运人,将数据从 PySpark 转换为 Pandas,然后使用 Matplotlib 绘制条形图。
在 Databricks Notebook 中可视化输出。图片来源:作者。
同样,您可以在 Databricks Notebook 中显示单个单元执行产生的多个输出。例如,下方代码的输出将显示 airlines 数据集的前 5 行,以及最常见的 10 家航空承运人的统计。
在 Databricks Notebook 中显示单个单元执行的多个输出。图片来源:作者。
Databricks Notebook 高级特性
Databricks Notebooks 提供强大的自动化、版本控制与集成能力,提升生产力、协作与运营效率。本节将探索关键高级功能与最佳实践,帮助充分发挥 Databricks Notebooks 的潜力。
自动化与调度
Databricks 支持将 notebooks 调度为作业(jobs)来实现自动执行,并通过参数化实现动态运行。
将 notebooks 调度为作业
用户可按指定时间间隔调度 notebook 的运行,从而自动化 ETL、报告与模型训练工作流。按照以下步骤调度 notebook 作业:
在 Databricks Notebook 中创建作业运行。图片来源:作者。
在 Databricks Notebook 中配置计划与触发器。图片来源:作者。
在 Databricks Notebook 中执行作业运行。图片来源:作者。
使用参数与小部件进行动态执行
Databricks 小部件(widgets)支持动态定义参数,使同一 notebook 可使用不同输入运行。例如,下方
dbutils.widgets.text()将创建一个标注为 "Enter Parameter" 的交互式文本输入小部件,默认值为default_value,随后获取用户输入的值并打印。类似地,下方代码会生成一个名为
dataset的下拉菜单,选项为sales、marketing与finance,默认选择sales。随后获取用户选择并打印所选数据集。版本控制与协作
Databricks 提供内置版本管理与协作功能,便于跟踪更改、恢复旧版本,并与团队实时协作。
自动版本历史与 Git 集成
Databricks Notebook 的每次变更都会自动纳入版本管理。您可以就版本历史进行如下操作:
在 Databricks Notebook 中查看版本历史。图片来源:作者。
实时协作功能
Databricks Notebooks 通过以下功能让团队实现共同创作、评论与共享见解:
与其他工具的集成
Databricks Notebooks 可与 Delta Live Tables、MLflow、SQL Warehouses 以及 CI/CD 流水线集成,以扩展功能。
在 Databricks 中使用 Delta Live Tables
Delta Live Tables(DLT)通过声明式 ETL 简化数据管道自动化。下方查询在 SQL 中创建一个 Delta Live Table Pipeline。
用于实验跟踪的 MLflow
MLflow 与 Databricks 集成,可用于跟踪机器学习实验。例如,下方代码将机器学习模型的学习率与准确率记录到 MLflow 作为被跟踪实验的一部分,记录完成后结束实验会话。这样您可以随时间跟踪超参数与模型表现,并比较不同运行。
导出 Notebooks 与 CI/CD 集成
Databricks Notebooks 可导出为多种格式,包括:
.html:用于共享只读报告。.ipynb:转换为 Jupyter Notebooks。.dbc:Databricks 归档,便于移植。例如,您可以通过 CLI 使用以下命令导出一个 notebook。
掌握 Databricks Notebooks 的技巧
Databricks Notebooks 提供诸多强大功能,以简化工作流、提升效率并改善协作。本节将介绍我在使用 Databricks Notebooks 平台时颇为实用的魔法命令、UI 增强、数据探索技巧与代码管理策略。
魔法命令
Databricks 提供的魔法命令可简化运行脚本、管理文件与安装包等任务。
%run
要在当前 notebook 中执行另一个 notebook 以模块化工作流,可使用
%run命令。您也可以用%run将大型项目拆分为可复用的 notebooks。例如,下方命令运行data_preprocessingnotebook,使其中的变量、函数与输出在当前 notebook 中可用。%sh
%sh命令允许您在 notebook 中直接执行 Linux shell 命令。下例中,该命令会列出/dbfs/data/DBFS 路径下的内容。%fs
同样,
%fs命令允许您与 Databricks 文件系统(DBFS)进行交互,执行文件操作。例如,下方命令会列出/databricks-datasets/下的所有文件与目录,该位置包含 Databricks 提供的公共数据集。同样,您可以使用
%fs cp复制文件,%fs rm删除文件,%fs head预览文件。%pip
%pip命令用于在 notebook 环境中安装 Python 包。下方命令会在当前会话中安装matplotlib包。%pip freeze命令可用于列出已安装的包,确保可复现性。UI 增强
Databricks 推出了如下 UI 增强,改进导航、调试与整体体验:
我始终建议开启专注模式(View → Focus Mode)以减少干扰。
数据探索技巧
Databricks 提供内置工具,可直接在 notebooks 中浏览数据集、了解架构并进行数据剖析。
要浏览 DBFS 中的数据集,可使用
%fs ls或display(dbutils.fs.ls())来查看可用数据集。您也可以在界面侧边栏中直接探索表结构,步骤如下:
对于数据剖析,您可以使用
display()或 SQL 查询来汇总数据。代码管理策略
在 Databricks Notebooks 中请使用以下技巧管理代码。例如,将可复用的代码片段存放在独立 notebooks 中,并通过
%run调用。同时,使用 Databricks Utilities(dbutils)进行转换。此外,为增强可读性,建议遵循 PEP 8(Python)或 SQL 最佳实践,并始终使用 markdown 单元进行注释。若在使用 Databricks Notebooks 时遇到问题,可通过以下方法进行故障排除:
集群卡住?重启内核(Run → Clear State & Restart)。
执行缓慢?在 Cluster → Spark UI 中检查瓶颈。
版本冲突?使用
%pip list检查依赖。使用以下键盘快捷键以更高效地编码:
真实世界的用例与场景
Databricks Notebooks 广泛应用于数据工程、机器学习与商业智能领域。本节将通过真实案例与代码片段展示团队如何将 Databricks Notebooks 用于生产工作流。
案例一:面向数据工程的 ETL 管道
设想一家零售公司接入原始销售数据、进行清洗,并存入 Delta Lake 用于报告分析。流程如下:
此流程将提升报告的数据可靠性与查询性能。以下代码片段示例展示了如何实现上述方案:
案例二:机器学习模型开发
再设想一家金融机构利用机器学习模型预测贷款违约。要在 Databricks Notebook 中实现该工作流,请按照以下步骤进行。最终将通过 MLflow 实现模型的自动化跟踪与部署。
案例三:面向商业智能的临时分析
在市场团队分析客户互动趋势的场景中,可按以下步骤实现:
此流程将通过交互式仪表板加速决策。
如果您需要温习 Databricks SQL,建议阅读我们的 Databricks SQL 教程,了解如何从 Databricks Web 界面设置 SQL Warehouse。
故障排除与常见问题
在并发运行 Databricks notebooks 时,调试与性能维护可能会面临独特挑战。以下建议可帮助您在生产环境中保持 notebook 的稳定性。
常见问题与解决方案
以下是一些问题与推荐方案:
单独运行正常的 notebook,在多用户或多作业同时执行时失败:可能由共享变量引起,或单个集群无法支持多次并发执行。解决方法:使用小部件进行参数化,或启用集群自动扩缩容,确保足够资源用于并发执行。
以往运行迅速的 notebook 现在明显变慢:可能由于低效的 Spark 转换导致洗牌(shuffle)问题,或过多缓存/持久化数据集占用内存。解决方法:配合
.persist()与.unpersist()管理缓存;同时在 Spark UI 中监控倾斜分区,并利用 Delta 表优化查询。使用 %run 执行另一个 notebook 失败:可能是 notebook 路径错误,或被引用的 notebook 依赖的集群不可用。解决方法:使用绝对路径导入 notebook;检查集群可用性,确保引用的 notebooks 使用兼容的集群。
计划任务(scheduled notebook job)失败:可能因执行前集群被终止,或外部依赖(如数据库连接或 API 调用)失败。解决方法:启用故障时重启集群;在作业设置中开启 Retry on Failure;对外部调用使用 Try-Except 块。
阅读我们的 Mastering the Databricks API 教程,了解如何使用 Databricks REST API 进行作业调度与自动化管道扩缩容。
在生产环境中维护 notebooks 的最佳实践
在生产环境中维护 Databricks Notebooks,请采用以下技巧:
模块化代码并复用 notebooks:将大型 notebooks 拆分为更小、可复用的单元,并用
%run调用。将辅助函数存放在单独的工具类 notebooks 中。使用版本控制(Git 集成):启用 Databricks Repos 以跟踪变更并支持回滚。
为作业优化集群选择:计划运行时优先使用作业集群(job clusters)而非交互式集群。
实现日志与告警:使用
dbutils.notebook.exit()记录作业状态;也可在 Jobs UI 中配置邮件告警,通知团队故障情况。为清晰起见撰写文档并使用 Markdown:使用 markdown 单元描述工作流步骤与逻辑。
结语
如果您想进一步探索 Databricks 的基础概念,非常推荐参加我们的 Introduction to Databricks 课程。该课程可为您打下正确的理解基础,以便之后尝试更高级的功能,例如魔法命令、参数化与性能优化。最后,我也建议您了解如何获取 Databricks 认证。我们的文章将帮助您了解职业收益,并选择与职业目标相匹配的认证。