运行 来自 RStudio 的 SparkR returns "Cannot run program Rscript"

Running SparkR from RStudio returns "Cannot run program Rscript"

我正在用 RStudio 试用 SparkR,但它似乎不起作用。 我已经在其他问题上尝试了建议的解决方案,但我仍然无法弄清楚为什么它不是 运行ning.

我运行ning的代码如下

if (nchar(Sys.getenv("SPARK_HOME")) < 1) {
  Sys.setenv(SPARK_HOME = "c://spark")
}
library(SparkR)
library(SparkR, lib.loc = c(file.path(Sys.getenv("SPARK_HOME"), "R", "lib")))

sc<-sparkR.session(master="spark://192.168.56.1:7077",appName = "R Spark", sparkConfig = list(spark.cassandra.connection.host="localhost"), sparkPackages = "datastax:spark-cassandra-connector:1.6.0-s_2.11")
df<- as.DataFrame(faithful)
showDF(df)

我收到的消息是

Error in invokeJava(isStatic = FALSE, objId$id, methodName, ...) : 
  org.apache.spark.SparkException: Job aborted due to stage failure: Task 0 in stage 1.0 failed 4 times, most recent failure: Lost task 0.3 in stage 1.0 (TID 4, 192.168.56.1): java.io.IOException: Cannot run program "Rscript":
CreateProcess error=2, Das System kann die angegebene Datei nicht finden
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
    at org.apache.spark.api.r.RRunner$.createRProcess(RRunner.scala:348)
    at org.apache.spark.api.r.RRunner$.createRWorker(RRunner.scala:386)
    at org.apache.spark.api.r.RRunner.compute(RRunner.scala:69)
    at org.apache.spark.api.r.BaseRRDD.compute(RRDD.scala:50)
    at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:319)
    at org.apache.spark.rdd.RDD.iterator(RDD.scala:283)
    at org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:38)
    at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:319)
    at org.apache.spark.rdd.RDD.iterator(RDD.scala:283)
    at org.apache.spark.rdd.MapPartitionsRDD.

我正在尝试 运行 在一个有 1 个 Worker 的独立集群上,

Spark 版本为 2.0.2

RStudio:1.0.136

R: 3.3.2

我在 RStudio 下使用 2 节点集群遇到了类似的问题。

问题是,虽然您的 R 驱动程序安装了 R,但您的工作节点没有(或者至少在其执行路径中没有 Rscript)。结果,当它尝试 运行 工作程序而不是主机上的一些 R 代码时,它找不到 Rscript。

解决方案:在您的工作节点上安装 R 和 Rscript。

希望对您有所帮助!