&引用;作业因阶段故障而中止”;在SparkR中使用CreateDataFrame时

&引用;作业因阶段故障而中止”;在SparkR中使用CreateDataFrame时,r,apache-spark,sparkr,R,Apache Spark,Sparkr,按照本文()中的说明,我使用以下代码创建sparkdataframe: library(SparkR, lib.loc = c(file.path(Sys.getenv("SPARK_HOME"), "R", "lib"))) sparkR.session(master = "spark://master:7077", sparkConfig = list(spark.cores.max="8", spark.executor.cores = "4")) data(iris) iris = cr

按照本文()中的说明,我使用以下代码创建sparkdataframe:

library(SparkR, lib.loc = c(file.path(Sys.getenv("SPARK_HOME"), "R", "lib")))
sparkR.session(master = "spark://master:7077", sparkConfig = list(spark.cores.max="8", spark.executor.cores = "4"))
data(iris)
iris = createDataFrame(iris)
head(iris)
但是
head
功能总是导致以下错误。我尝试运行
dim
时也会遇到相同的错误。我还尝试了
作为.DataFrame
而不是
createDataFrame
。我还尝试重新启动ipython笔记本中的内核,并重新启动spark会话

我的理解是,这是SparkR的一个非常基本的功能,所以我真的不知道为什么它不起作用。出于某种原因,当我使用
read.jdbc
直接从数据源读取我的
SparkDataFrame
时,我没有问题。此外,我注意到错误行中的数字“:Task 0 in stage XXX..”每次失败时都会增加一个

我还注意到,错误似乎来自这样一个事实:执行器无法找到
Rscript
的二进制文件,尽管我不确定为什么这只会发生在从本地data.frames创建的SparkDataFrames上,而不是从外部数据源提取的SparkDataFrames上

有人能帮我吗

完整的错误堆栈跟踪是:

FUN(X[[i]],…)中的警告消息:“使用萼片长度而不是 sepa.Length作为列名“FUN中的警告消息(X[[i]],…):”使用 分隔符_宽度而不是分隔符。宽度作为列名“中的警告消息” 乐趣(X[[i]],…):“使用花瓣长度而不是花瓣。长度作为列 名称“乐趣中的警告消息(X[[i]],…):”使用花瓣宽度而不是 “花瓣宽度作为列名”

invokeJava中出错(isStatic=TRUE, className,methodName,…):org.apache.spark.SparkException:Job 由于阶段失败而中止:阶段45.0中的任务0失败4次, 最近的失败:在阶段45.0中丢失任务0.3(TID 3372,10.0.0.5): java.io.IOException:无法运行程序“Rscript”:错误=2,无此类错误 文件或目录位于 start(ProcessBuilder.java:1048)位于 org.apache.spark.api.r.RRunner$.createRProcess(RRunner.scala:348)位于 org.apache.spark.api.r.RRunner$.createRWorker(RRunner.scala:364)位于 org.apache.spark.api.r.RRunner.compute(RRunner.scala:69)位于 org.apache.spark.api.r.BaseRRDD.compute(RRDD.scala:49)位于 org.apache.spark.rdd.rdd.computeOrReadCheckpoint(rdd.scala:319)位于 org.apache.spark.rdd.rdd.iterator(rdd.scala:283)位于 org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:38) 在org.apache.spark.rdd.rdd.computeOrReadCheckpoint(rdd.scala:319) 位于org.apache.spark.rdd.rdd.iterator(rdd.scala:283) org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:38) 在org.apache.spark.rdd.rdd.computeOrReadCheckpoint(rdd.scala:319) 位于org.apache.spark.rdd.rdd.iterator(rdd.scala:283) org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:38) 在org.apache.spark.rdd.rdd.computeOrReadCheckpoint(rdd.scala:319) 位于org.apache.spark.rdd.rdd.iterator(rdd.scala:283) org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:38) 在org.apache.spark.rdd.rdd.computeOrReadCheckpoint(rdd.scala:319) 位于org.apache.spark.rdd.rdd.iterator(rdd.scala:283) org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:70)位于 org.apache.spark.scheduler.Task.run(Task.scala:85)位于 org.apache.spark.executor.executor$TaskRunner.run(executor.scala:274) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 在java.lang.Thread.run(Thread.java:748)处,由以下原因引起: java.io.IOException:error=2,此时没有此类文件或目录 位于的java.lang.UNIXProcess.forkAndExec(本机方法) UNIXProcess.java:247) java.lang.ProcessImpl.start(ProcessImpl.java:134)位于 java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)。。。还有24个

驱动程序堆栈跟踪:在 org.apache.spark.scheduler.DAGScheduler.org$apache$spark$scheduler$DAGScheduler$$failJobAndIndependentStages(DAGScheduler.scala:1450) 在 org.apache.spark.scheduler.DAGScheduler$$anonfun$abortStage$1.apply(DAGScheduler.scala:1438) 在 org.apache.spark.scheduler.DAGScheduler$$anonfun$abortStage$1.apply(DAGScheduler.scala:1437) 在 scala.collection.mutable.resizeblearray$class.foreach(resizeblearray.scala:59) 位于scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:48) 在 org.apache.spark.scheduler.DAGScheduler.abortStage(DAGScheduler.scala:1437) 在 org.apache.spark.scheduler.DAGScheduler$$anonfun$handleTaskSetFailed$1.apply(DAGScheduler.scala:811) 在 org.apache.spark.scheduler.DAGScheduler$$anonfun$handleTaskSetFailed$1.apply(DAGScheduler.scala:811) 位于scala.Option.foreach(Option.scala:257) org.apache.spark.scheduler.DAGScheduler.handleTaskSetFailed(DAGScheduler.scala:811) 在 org.apache.spark.scheduler.DAGSchedulerEventProcessLoop.doOnReceive(DAGScheduler.scala:1659) 在 org.apache.spark.scheduler.DAGSchedulerEventProcessLoop.onReceive(DAGScheduler.scala:1618) 在 org.apache.spark.scheduler.DAGSchedulerEventProcessLoop.onReceive(DAGScheduler.scala:1607) 位于org.apache.spark.util.EventLoop$$anon$1.run(EventLoop.scala:48) 在 org.apache.spark.scheduler.DAGScheduler.runJob(DAGScheduler.scala:632) 位于org.apache.spark.SparkContext.runJob(SparkContext.scala:1871) org.apache.spark.SparkContext.runJob(SparkContext.scala:1884)位于 org.apache.spark.SparkContext.runJob(SparkContext.scala:1897)位于 org.apache.spark.sql.execution.SparkPlan.executeTake(SparkPlan.scala:347) 在 org.apache.spark.sql.execution.CollectLimitExec.executeCollect(limit.scala:39) 在 org.apache.spark.sql.Dataset$$anonfun$org$apache$spark$sql$Dataset$$execute$1$1