如何设置和 运行 SparkR 项目和脚本(如 jar 文件)?

How do I setup and run SparkR projects and scripts (like a jar file)?

我们已经成功完成了所有关于设置它的 SparkR 教程,运行在 EC2 实例上在 RStudio 中安装基本程序。

我们现在无法弄清楚的是如何创建一个将 SparkR 作为依赖项的项目,compile/jar 它,以及 运行 其中的任何各种 R 程序。

我们来自 Scala 和 Java,所以我们可能以错误的心态来解决这个问题。这甚至可能在 R 中实现,还是 Java 构建文件和 jar 的方式不同,或者您是否只需要 运行 每个 R 脚本单独而不是打包的 jar?

do you just have to run each R script individually without a packaged jar?

或多或少。虽然您可以创建一个 R 包 (-s) 来存储代码的可重用部分(例如参见 [​​=12=] 或 R packages)并可选择将其分发到集群中(因为当前 public API 仅限于与 JVM 后端的高级交互,不需要它),您传递给 spark-submit 的只是一个 R 脚本,其中:

  • 创建 SparkContext - SparkR::sparkR.init
  • 创建一个 SQLContext / HiveContexts - SparkR::sparkRSQL.init / SparkR::sparkRHive.init
  • 执行其余代码
  • 停靠 SparkContext - SparkR::sparkR.stop

假设 worker 上存在外部依赖项,可以使用 if not require 模式在运行时安装缺少的包,例如:

if(!require("some_package")) install.packages("some_package")

if(!require("some_package")) devtools::install_github("some_user/some_package")