&引用;作业因阶段故障而中止”;在SparkR中使用CreateDataFrame时
按照本文()中的说明,我使用以下代码创建sparkdataframe:&引用;作业因阶段故障而中止”;在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
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