如何设置和 运行 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")
我们已经成功完成了所有关于设置它的 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")