Apache Spark 应用工作流程

Apache Spark app workflow

您如何组织 Spark 开发工作流程?

我的方式:

  1. 本地 hadoop/yarn 服务。
  2. 本地火花服务。
  3. 一个屏幕上的 Intellij
  4. 带 运行ning sbt 控制台的终端
  5. 更改 Spark 应用程序代码后,我切换到终端并 运行 "package" 编译为 jar 和 "submitSpark" 这是 运行s spark- 的 stb 任务提交
  6. 在 sbt 控制台中等待异常 :)

我也尝试使用 spark-shell:

  1. 运行 shell 并加载之前编写的应用程序。
  2. 在shell
  3. 中写一行
  4. 评价一下
  5. 如果没问题复制到IDE
  6. 经过2、3、4之后,粘贴代码到IDE,编译spark app并重新启动

有什么方法可以更快地开发 Spark 应用程序?

我发现编写脚本和使用 :load / :copy 简化了一些事情,因为我不需要打包任何东西。如果您确实使用 sbt,我建议您启动它并使用 ~ package,以便它在进行更改时自动打包 jar。当然,最终一切都会在一个应用程序 jar 中结束,这是为了原型设计和探索。

  1. 本地火花
  2. Vim
  3. 火花-Shell
  4. API
  5. 控制台

我们使用 IDE(Intellij,因为我们在 Scala 中编写您的 spark 应用程序代码)开发我们的应用程序,并使用 scalaTest 进行测试。

在这些测试中,我们使用 local[*] 作为 SparkMaster 以允许调试。

对于集成测试,我们使用了 Jenkins 并启动了一个 "end to end" 脚本作为 Scala 应用程序。

希望有用

我使用交互式环境开发 Spark 作业的核心逻辑以进行快速原型制作。为此,我们针对开发集群使用 Spark Notebook 运行。

一旦我制作了逻辑原型并且它按预期工作,我 "industrialize" Scala 项目中的代码,具有经典的构建生命周期:创建测试;由 Jenkins 构建、打包和创建工件。