详情

首页手游攻略 spark-scala-tutorial:实践指南

spark-scala-tutorial:实践指南

佚名 2026-09-11 18:50:01

准备试用spark-scala-tutorial之前,先别急着安装;这个项目提供的是Apache Spark 的免费教程。把它放到日常自动化流程中,最容易暴露的是输入边界、依赖和失败处理如果不清楚就很难稳定复用,不能只看演示是否顺利。我的评估方法是用一项范围明确的真实任务完成最小试跑,然后检查配置时间、输出质量、异常信息和维护痕迹是否与文档一致。我会把它列入愿意先做小范围验证并复查原始文档的团队的候选清单,而不是仅凭项目介绍直接纳入生产。

Apache Spark Scala 教程 - README

院长 Wampler

[email protected]

@deanwampler

本教程演示如何使用 Scala 和一些 SQL 编写和运行 Apache Spark 应用程序。我还会教一些 Scala,但如果您已经了解 Spark,并且您更有兴趣学习足够的 Scala 来进行 Spark 编程,请参阅我的其他教程 足够的 Scala for Spark。

您可以通过多种方式运行示例和练习:

  1. 笔记本,例如 Jupyter - 最简单的方法,特别是对于习惯_笔记本_的数据科学家。
  2. 在 IDE 中,例如 IntelliJ - 开发人员熟悉。
  3. 在终端提示符处使用构建工具 SBT。

本教程主要是关于 Spark 的学习,但我会同时教您一些 Scala。如果您有兴趣学习足够的 Scala for Spark 编程,请参阅我的新教程 Just Enough Scala for Spark。

注释:

1.目前使用的Spark版本是2.3.X,有点旧。 (TODO!) 2. 虽然笔记本方法是使用本教程学习 Spark 的最简单方法,但 IDE 和 SBT 选项显示了创建 Spark applications、i.e.、编写您构建和运行的可执行程序以及使用交互式 Spark Shell 的示例的详细信息。

寻求帮助

在描述使用本教程的不同方法之前,如果您遇到问题,请使用此存储库的 讨论论坛。如果您相当确定发现了错误,请改为 发布问题。当然,也欢迎请求请求!!

设置说明

让我们开始吧...

下载教程

首先克隆或下载教程 GitHub 项目 github.com/deanwampler/spark-scala-tutorial。

现在选择您想要完成本教程的方式:

  1. 笔记本电脑 - 转到 此处
  2. 在 IDE 中,例如 IntelliJ - 转到此处 这里
  3. 在终端提示符下使用 SBT - 转到 这里

使用笔记本

使用本教程的最简单方法是使用 Docker 映像,该映像将流行的 Jupyter 笔记本环境与运行 Spark 所需的所有工具(包括 Scala 语言)结合在一起。它被称为全火花笔记本。 它捆绑 Apache Toree 以提供 Spark 和 Scala 访问。 此 Docker 映像的 网页 讨论了有用的信息,例如使用 Python 和 Scala、用户身份验证主题、在集群上运行 Spark 作业(而不是本地模式)等。

您还可以根据需要研究其他笔记本选项:

开源:

  • Polynote - 具有内置 Scala 支持的跨语言笔记本环境。由 Netflix 开发。
  • Jupyter + BeakerX - 一组强大的 Jupyter 扩展。
  • Zeppelin - 大数据环境中的流行工具

商业:

  • Databricks - 功能丰富、商业、基于云的服务

安装 Docker 和 Jupyter 映像

如果需要安装 Docker,请按照 docker.com 中的安装说明进行操作(社区版就足够了)。

现在我们将运行 docker 镜像。仔细执行后续步骤非常重要。我们将在正在运行的容器中安装两个本地目录,一个用于我们想要使用的数据,另一个用于笔记本。

  • 打开终端或命令窗口
  • 更改为您扩展教程项目或克隆存储库的目录
  • 要下载并运行 Docker 映像,请运行以下命令:run.sh(MacOS 和 Linux)或 run.bat (Windows)

MacOS 和 Linux run.sh 命令执行此命令:

docker run -it --rm 
  -p 8888:8888 -p 4040:4040 
  --cpus=2.0 --memory=2000M 
  -v "$PWD/data":/home/jovyan/data 
  -v "$PWD/notebooks":/home/jovyan/notebooks 
  "$@" 
  jupyter/all-spark-notebook

Windows run.bat 命令类似,但使用 Windows 约定。

添加 --cpus=... --memory=... 参数是因为笔记本“内核”在使用默认值时很容易崩溃。编辑口味。此外,一次只打开一个笔记本(除简介之外)将有所帮助。

-v PATH:/home/jovyan/dir 告诉 Docker 将 dir 目录挂载到当前工作目录下,因此它在容器内可作为 /home/jovyan/dir 使用。 这对于提供对教程数据和笔记本的访问至关重要。当您打开笔记本 UI(稍后讨论)时,您将看到列出的这些文件夹。

注意: 在 Windows 上,您可能会收到以下错误:C:Program FilesDockerDockerResourcesbindocker.exe:来自守护程序的错误响应:D: 驱动器未共享。请在 Docker for Windows 设置z共享它。” 如果是这样,请执行以下操作。在托盘上的时钟旁边,右键单击 Docker,然后单击“设置”。您将看到_共享驱动器_。标记您的驱动器并点击“应用”。请参阅 此 Docker 论坛线程 了解更多提示。

-p 8888:8888 -p 4040:4040 参数告诉 Docker 将端口 8888 和 4040 从容器中“隧道”到本地环境,这样您就可以访问端口 8888 处的 Jupyter UI 和端口 4040 处的 Spark 驱动程序 UI。

您应该看到类似于以下内容的输出:

Unable to find image 'jupyter/all-spark-notebook:latest' locally
latest: Pulling from jupyter/all-spark-notebook
e0a742c2abfd: Pull complete
...
ed25ef62a9dd: Pull complete
Digest: sha256:...
Status: Downloaded newer image for jupyter/all-spark-notebook:latest
Execute the command: jupyter notebook
...
[I 19:08:15.017 NotebookApp] 使用 Control-C 停止此服务器并关闭所有内核(两次以跳过确认)。
[C 19:08:15.019 NotebookApp]

    Copy/paste this URL into your browser when you connect for the first time,
    to login with a token:
        http://localhost:8888/?token=...

现在复制并粘贴浏览器窗口中显示的 URL。 (在 MacOS 的终端窗口中使用 command+click。)

警告: 当您在教程结束时退出 Docker 容器时,您的所有更改都将丢失,除非它们位于我们安装的 datanotebooks 目录中!要保存在其他位置定义的笔记本,请使用工具栏中的_文件 > 下载为 > 笔记本_ 菜单项将其导出。

运行教程

在 Jupyter UI 中,您应该看到三个文件夹:datanotebookswork。前两个是我们挂载的文件夹。我们将使用的数据位于 data 文件夹中。我们将使用的笔记本是......你明白了。

打开 notebooks 文件夹,然后单击 00_Intro.ipynb 的链接。

它会在新的浏览器选项卡中打开。加载可能需要几秒钟。

提示: 如果新选项卡无法打开或笔记本无法加载(如图所示),请检查启动 Jupyter 的终端窗口。有错误信息吗?

如果您是 Jupyter 新手,请尝试_帮助 > 用户界面教程_来了解如何使用 Jupyter。至少,您需要将内容组织到_单元格_中。您可以使用向上和向下箭头或单击进行导航。当您到达带有代码的单元格时,单击工具栏中的_run_按钮或使用shift+return来执行代码。

通读简介笔记本,然后使用底部附近的表格导航到示例。我已经设置了表格,以便单击每个链接都会打开一个新的浏览器选项卡。

使用 IDE

本教程还设置为使用构建工具 SBT。流行的IDEs,如带有Scala插件的IntelliJ(必需)和带有Scala Eclipse,可以导入SBT项目并自动从中创建一个 IDE 项目。

导入后,您可以将 Spark 作业示例作为常规应用程序运行。有一些作为脚本实现的示例,需要使用 Spark Shell 或 SBT 控制台运行。本教程将详细介绍。

您现在已准备好学习 教程。

在终端中使用 SBT

如果您更喜欢使用 Emacs、Vim 或 SublimeText 等代码编辑器,那么在终端中使用 SBT 是一个好方法。您需要 安装 SBT,但不需要安装 Scala 或 Spark。当您构建软件时,这些依赖关系将得到解决。

启动sbt控制台,然后构建代码,其中sbt:spark-scala-tutorial>是我为项目配置的提示符。运行 test 编译代码并运行测试,而 package 创建编译后的代码和配置文件的 jar 文件:

$ sbt
...
sbt:spark-scala-tutorial> test
...
sbt:spark-scala-tutorial> package
...
sbt:spark-scala-tutorial>

您现在已准备好学习 教程。

从这里继续前进

要了解更多信息,请参阅以下资源:

  • Lightbend 的快速数据平台 - 一个精心策划的、完全支持的开源流和微服务工具的发行版,例如 Spark、Kafka、HDFS、Akka Streams 等。
  • Apache Spark 网站。
  • Spark 峰会的演讲。
  • 学习 Spark,O'Reilly 的精彩介绍,但现在有点过时了。

最后的想法

感谢您完成本教程。欢迎提供反馈和拉取请求。

迪安·万普勒

相关资讯
点击查看更多
游戏推荐
推荐专题
热门阅读
推荐下载