最初,出现了数据仓库 。它们以行和列存储数据,因为当时的互联网和计算机所能分发的只是简单的文本信息。后来出现了数据湖 ——几乎可以存储您所能收集的任何类型的数据。它们非常适合社交媒体和 YouTube 的时代。
但两者都有缺点——数据仓库成本高且不适合现代数据科学,而数据湖则杂乱无章,常常演变成“数据沼泽”。于是,公司开始维持两套独立的技术栈——仓库用于 BI 和分析,湖用于机器学习。
然而,同时管理两种不同的数据架构代价极高,以至于企业往往收效不佳。这个问题促生了湖仓一体架构 ,这也正是 Databricks 闻名之处。
Databricks 是一个基于云的平台,允许用户在统一环境中同时从数据仓库和数据湖中获取价值。本文将概览该平台,展示其最重要的功能以及如何使用它们。
本 Databricks 教程将涵盖什么
Databricks 是一个庞大的平台,其文档本身就足以成书。因此,本文旨在为您提供一个概念层级——按线性顺序解释 Databricks 的特性,帮助您从入门走向熟练使用者。如果您是完全的新手,也可以查看我们的Databricks 入门课程 。
让我们开始吧!
1. 什么是 Databricks?
看到 Databricks 这个词,您应当首先把它当作一个平台,而不是某个框架或 Python 库。通常,平台都会提供广泛的功能,Databricks 也不例外。它是少数能够被各类数据从业者使用的平台之一,从数据工程师到现代的机器学习工程师(或媒体如今称作 AI 程序员)。
Databricks 的核心组件包括:
Workspace: Databricks 提供一个集中式环境,团队可在此无缝协作。该环境通过友好的网页界面访问。
Notebooks: Databricks 提供专为协作与灵活性设计的 Jupyter 笔记本变体。
Apache Spark: Databricks 深度集成 Apache Spark。它是驱动海量数据并行处理的引擎,适用于大数据分析。
Delta Lake: 在数据湖之上提供 ACID 事务的增强。Delta Lake 确保数据可靠性与一致性,解决了传统数据湖的诸多难题。
可扩展性: 平台采用水平扩展而非垂直扩展,非常适合数据需求不断增长的组织。
Databricks 的优势
这些组件结合起来,带来广泛的收益:
跨团队协作: 工程师、分析师、科学家与 ML 工程师都可在同一平台无缝合作。
一致性: 借助笔记本,用户可在任务与编程语言之间切换,无需频繁转换上下文。
高效工作流: 用户可在同一环境中连贯地完成数据清洗、转换与机器学习等任务。
一体化数据管理: 用户可从多种来源将数据摄入平台、创建表并运行 SQL。
实时协作: 共享笔记本与协同编辑功能支持实时合作。多人可同时在同一笔记本上工作。
如果您已经认可 Databricks 在数据世界中的重要性,让我们继续带您上手这个平台。
2. 账户设置
要设置您的账户,请访问 https://www.databricks.com/try-databricks 并注册社区版(Community Edition)。
社区版的功能少于企业版,但不需要配置云服务提供商,这对于教程等小型用例非常合适。
如果在邮箱验证后看到此页面,您就可以开始使用了:
3. Databricks 工作区(Workspace)
您所看到的界面就是与您的邮箱绑定的 Workspace(社区版工作区 很容易找到)。在实际使用中,通常由公司账户管理员创建一个统一的 Databricks 账户并管理对工作区的访问。
现在,我们来了解一下平台的 UI。左侧面板是 Databricks 提供的各个组件的菜单。企业版的按钮会更多:
菜单中的第一个选项是工作区类型,默认设置为数据科学与工程。如果将其切换为机器学习,会出现一个新的实验(Experiments)选项:
表面上看,这似乎没做什么改变,但一旦您升级账户并开始深入使用,就会发现平台的一些出色功能:
资源中心:笔记本、集群、表、库与仪表板的集中管理
多语言笔记本
集群管理:为工作区执行代码提供计算资源的管理
表管理
仪表板创建:DB 用户可直接在工作区中将可视化内容汇集为仪表板
笔记本的实时协作编辑
笔记本的版本控制
作业调度(强大功能):用户可按指定间隔执行笔记本与脚本
等等。
接下来,我们更详细地看看这些组件中的一部分。
4. Databricks 集群(Clusters)
Databricks 中的集群指用于执行数据处理任务的计算资源。通常,集群由您在账户设置时选择的云服务提供商提供。
社区版的集群在内存和 CPU 能力上有限,且不包含 GPU。不过,高级用户通常可以更顺畅地用集群完成以下任务:
数据处理: 利用 Spark 的并行处理能力来处理和转换海量数据。
机器学习: 您可以使用 Python(或其他语言)及其库进行模型训练与推理。
ETL 工作流: 集群同样支持抽取、转换、加载(ETL)工作流,高效地将数据从源头处理并转换到目标。
要创建集群,您可以使用“Create”按钮或菜单中的“Compute”选项:
创建集群时,为您的环境选择合适的 Spark 版本,并等待几分钟使其就绪。
5. Databricks 笔记本(Notebooks)
当集群运行后,您就可以创建笔记本了。如果您使用过 Jupyter、Colab 或 DataCamp Workspaces ,会觉得很熟悉:
但在已经有真正的 Jupyter 的世界里,为什么要用“类似 Jupyter”的东西?因为 Databricks 笔记本相较于 Jupyter 有以下优势:
协作: 内置协作功能允许多名用户同时在同一笔记本上工作,变更会实时追踪。
执行环境: 大多数 Jupyter 环境提供商或本地实例依赖单机且硬件预设,用户必须自行安装外部库与依赖。相比之下,Databricks 笔记本由集群驱动,可根据工作负载自动处理资源与扩展,并提供预配置的环境。
与大数据技术的集成: Jupyter 可以与 Apache Spark 协作,但用户需手动管理 Spark 会话与依赖。Databricks 由 Spark 的创建者创立,原生支持该框架。Spark 会话与集群由 Databricks 平台自动管理。
Databricks 笔记本相较 Jupyter 还有许多其他优势,下面的表格总结了两者差异:
功能
Jupyter 笔记本
Databricks 笔记本
平台
开源,可本地运行或在云平台上运行
Databricks 平台专属
协作与共享
协作功能有限,需手动共享
内置协作,实时并发编辑
执行
依赖本地或外部服务器
在 Databricks 集群上执行
大数据集成
可与 Spark 集成,但需要额外配置
原生集成 Apache Spark,针对大数据优化
内置功能
版本控制、协作与可视化多依赖外部工具/扩展
与 Databricks 特性(如 Delta Lake)深度集成,内置协作与分析工具
成本与扩展
本地安装通常免费,基于云的方案可能产生费用
付费服务,费用随用量变化,可随 Databricks 集群无缝扩展
易用性
数据科学社区熟悉且广泛使用
为大数据分析定制,Databricks 特性可能有更高学习曲线
数据可视化
内置可视化支持有限
在笔记本环境内置数据可视化支持
集群管理
用户需手动管理 Spark 会话与依赖
Databricks 平台自动处理集群管理与扩展
用例
适用于多种数据科学任务
专注于 Databricks 平台内的协作式大数据分析
归根结底,以上这些优势在特定用例下会更为明显。如果您只是想在笔记本电脑上用 Pandas 玩一玩一个 CSV 数据集,Jupyter 会更合适。
但对于企业级应用,Databricks 作为一个平台可能是更好的选择。
6. 向 Databricks 摄入数据
数据摄入指从各种来源导入数据的过程。Databricks 支持从多种来源摄入数据,包括:
AWS S3
Azure Blob Storage
Google Cloud Storage
关系型数据库(MySQL、PostgreSQL 等)
数据湖(Delta Lake、Parquet、Avro 等)
流式平台(Apache Kafka)
Google BigQuery
您本地的那个 CSV 文件
等等。
现在,我们来看看如何把某些类型的数据加载到 Databricks。先从本地文件开始:
按照动图中的步骤操作后,您将在工作区中存放一个文件。以下是使用 Spark 加载它的方式:
from pyspark. sql import SparkSession
spark = SparkSession. builder. appName( "S3ImportExample" ) . getOrCreate( )
path = "dbfs:/FileStore/tables/diamonds.csv"
data_from_s3 = spark. read. csv( path, header= True , inferSchema= True )
data_from_s3. show( )
技术支持
请注意 dbfs: 前缀。所有工作区文件都必须包含它,Spark 才能正确加载。DBFS 代表 Databricks 文件系统(Databricks File System)。
从 S3 存储桶导入数据也类似(适用于企业账户):
from pyspark. sql import SparkSession
spark = SparkSession. builder. appName( "S3ImportExample" ) . getOrCreate( )
s3_path = "s3://your-bucket/your-data.csv"
data_from_s3 = spark. read. csv( s3_path, header= True , inferSchema= True )
data_from_s3. show( )
技术支持
关于其他数据类型,您可以查看 Databricks 文档中的数据工程 和连接到数据源 部分。
7. 在 Databricks 中运行 SQL
当我们上传 diamonds.csv 文件后,它变成了默认(default)数据库中的一张 Databricks 表:
只要我们在未预先创建数据库的情况下尝试加载结构化文件,就会自动创建这个 default 数据库。
既然有了数据库,我们就可以用 SQL 来查询它,而不只用 Spark。为此,创建一个新的笔记本,或将当前笔记本的语言切换为 SQL。然后试运行以下代码片段:
SELECT * FROM default . diamonds_1_csv
LIMIT 5 ;
技术支持
它应当返回 diamonds 表的前五行:
注意 :我使用的是 SQL 笔记本来运行上述代码片段
您也可以将这张表加载到 Pandas。在同一笔记本中,粘贴以下代码:
% python
import pandas as pd
table_df = spark. sql( "SELECT * FROM default.diamonds_1_csv" )
pandas_df = table_df. toPandas( )
pandas_df. head( )
技术支持
它应当打印出表格的前几行:
现在,您就可以同时使用 SQL 和 Pandas 在该表上完成各种常规的数据分析任务。
结语与后续步骤
我们仅用 Databricks 社区版这个基础账户就已经学到并实践了不少内容。要继续深入了解该平台,第一步是使用 Databricks 为高级账户提供的两周免费试用。
接着,您可以完整体验 DataCamp 提供的Databricks 入门 课程。除了账户设置,您还将学习并实践 DataCamp 的以下核心功能:
管理 Databricks 工作区
读取与写入外部数据库
数据转换
数据编排,即作业调度
Databricks SQL 全面概览
使用 Lakehouse AI 进行大规模机器学习。
最初,出现了数据仓库。它们以行和列存储数据,因为当时的互联网和计算机所能分发的只是简单的文本信息。后来出现了数据湖——几乎可以存储您所能收集的任何类型的数据。它们非常适合社交媒体和 YouTube 的时代。
但两者都有缺点——数据仓库成本高且不适合现代数据科学,而数据湖则杂乱无章,常常演变成“数据沼泽”。于是,公司开始维持两套独立的技术栈——仓库用于 BI 和分析,湖用于机器学习。
然而,同时管理两种不同的数据架构代价极高,以至于企业往往收效不佳。这个问题促生了湖仓一体架构,这也正是 Databricks 闻名之处。
Databricks 是一个基于云的平台,允许用户在统一环境中同时从数据仓库和数据湖中获取价值。本文将概览该平台,展示其最重要的功能以及如何使用它们。
本 Databricks 教程将涵盖什么
Databricks 是一个庞大的平台,其文档本身就足以成书。因此,本文旨在为您提供一个概念层级——按线性顺序解释 Databricks 的特性,帮助您从入门走向熟练使用者。如果您是完全的新手,也可以查看我们的Databricks 入门课程。
让我们开始吧!
1. 什么是 Databricks?
看到 Databricks 这个词,您应当首先把它当作一个平台,而不是某个框架或 Python 库。通常,平台都会提供广泛的功能,Databricks 也不例外。它是少数能够被各类数据从业者使用的平台之一,从数据工程师到现代的机器学习工程师(或媒体如今称作 AI 程序员)。
Databricks 的核心组件包括:
Databricks 的优势
这些组件结合起来,带来广泛的收益:
如果您已经认可 Databricks 在数据世界中的重要性,让我们继续带您上手这个平台。
2. 账户设置
要设置您的账户,请访问 https://www.databricks.com/try-databricks 并注册社区版(Community Edition)。
社区版的功能少于企业版,但不需要配置云服务提供商,这对于教程等小型用例非常合适。
如果在邮箱验证后看到此页面,您就可以开始使用了:
3. Databricks 工作区(Workspace)
您所看到的界面就是与您的邮箱绑定的 Workspace(社区版工作区 很容易找到)。在实际使用中,通常由公司账户管理员创建一个统一的 Databricks 账户并管理对工作区的访问。
现在,我们来了解一下平台的 UI。左侧面板是 Databricks 提供的各个组件的菜单。企业版的按钮会更多:
菜单中的第一个选项是工作区类型,默认设置为数据科学与工程。如果将其切换为机器学习,会出现一个新的实验(Experiments)选项:
表面上看,这似乎没做什么改变,但一旦您升级账户并开始深入使用,就会发现平台的一些出色功能:
等等。
接下来,我们更详细地看看这些组件中的一部分。
4. Databricks 集群(Clusters)
Databricks 中的集群指用于执行数据处理任务的计算资源。通常,集群由您在账户设置时选择的云服务提供商提供。
社区版的集群在内存和 CPU 能力上有限,且不包含 GPU。不过,高级用户通常可以更顺畅地用集群完成以下任务:
要创建集群,您可以使用“Create”按钮或菜单中的“Compute”选项:
创建集群时,为您的环境选择合适的 Spark 版本,并等待几分钟使其就绪。
5. Databricks 笔记本(Notebooks)
当集群运行后,您就可以创建笔记本了。如果您使用过 Jupyter、Colab 或 DataCamp Workspaces,会觉得很熟悉:
但在已经有真正的 Jupyter 的世界里,为什么要用“类似 Jupyter”的东西?因为 Databricks 笔记本相较于 Jupyter 有以下优势:
Databricks 笔记本相较 Jupyter 还有许多其他优势,下面的表格总结了两者差异:
功能
Jupyter 笔记本
Databricks 笔记本
平台
开源,可本地运行或在云平台上运行
Databricks 平台专属
协作与共享
协作功能有限,需手动共享
内置协作,实时并发编辑
执行
依赖本地或外部服务器
在 Databricks 集群上执行
大数据集成
可与 Spark 集成,但需要额外配置
原生集成 Apache Spark,针对大数据优化
内置功能
版本控制、协作与可视化多依赖外部工具/扩展
与 Databricks 特性(如 Delta Lake)深度集成,内置协作与分析工具
成本与扩展
本地安装通常免费,基于云的方案可能产生费用
付费服务,费用随用量变化,可随 Databricks 集群无缝扩展
易用性
数据科学社区熟悉且广泛使用
为大数据分析定制,Databricks 特性可能有更高学习曲线
数据可视化
内置可视化支持有限
在笔记本环境内置数据可视化支持
集群管理
用户需手动管理 Spark 会话与依赖
Databricks 平台自动处理集群管理与扩展
用例
适用于多种数据科学任务
专注于 Databricks 平台内的协作式大数据分析
归根结底,以上这些优势在特定用例下会更为明显。如果您只是想在笔记本电脑上用 Pandas 玩一玩一个 CSV 数据集,Jupyter 会更合适。
但对于企业级应用,Databricks 作为一个平台可能是更好的选择。
6. 向 Databricks 摄入数据
数据摄入指从各种来源导入数据的过程。Databricks 支持从多种来源摄入数据,包括:
等等。
现在,我们来看看如何把某些类型的数据加载到 Databricks。先从本地文件开始:
按照动图中的步骤操作后,您将在工作区中存放一个文件。以下是使用 Spark 加载它的方式:
请注意
dbfs:前缀。所有工作区文件都必须包含它,Spark 才能正确加载。DBFS 代表 Databricks 文件系统(Databricks File System)。从 S3 存储桶导入数据也类似(适用于企业账户):
关于其他数据类型,您可以查看 Databricks 文档中的数据工程和连接到数据源部分。
7. 在 Databricks 中运行 SQL
当我们上传
diamonds.csv文件后,它变成了默认(default)数据库中的一张 Databricks 表:只要我们在未预先创建数据库的情况下尝试加载结构化文件,就会自动创建这个
default数据库。既然有了数据库,我们就可以用 SQL 来查询它,而不只用 Spark。为此,创建一个新的笔记本,或将当前笔记本的语言切换为 SQL。然后试运行以下代码片段:
它应当返回 diamonds 表的前五行:
注意:我使用的是 SQL 笔记本来运行上述代码片段
您也可以将这张表加载到 Pandas。在同一笔记本中,粘贴以下代码:
它应当打印出表格的前几行:
现在,您就可以同时使用 SQL 和 Pandas 在该表上完成各种常规的数据分析任务。
结语与后续步骤
我们仅用 Databricks 社区版这个基础账户就已经学到并实践了不少内容。要继续深入了解该平台,第一步是使用 Databricks 为高级账户提供的两周免费试用。
接着,您可以完整体验 DataCamp 提供的Databricks 入门课程。除了账户设置,您还将学习并实践 DataCamp 的以下核心功能: