在Spark

时间:2016-10-19 20:54:42

标签: r apache-spark

我想从Spark运行我现有的R脚本。

我在我的机器上设置了R和Spark并尝试执行代码,但我得到了异常,但这不是很有帮助。

Spark Code -

String file = "/home/MSA2.R";
        SparkConf sparkConf = new SparkConf().setAppName("First App")
                .setMaster("local[1]");

        @SuppressWarnings("resource")
        JavaSparkContext sparkContext = new JavaSparkContext(sparkConf);

        JavaRDD<String> rdd = sparkContext.textFile("/home/test.csv")
        .pipe(file);

R代码 -

f1 <- read.csv("/home/testing.csv")

例外 -

  

线程中的异常&#34; main&#34; org.apache.spark.SparkException:Job   由于阶段失败而中止:阶段0.0中的任务0失败1次,大多数   最近的失败:阶段0.0中失去的任务0.0(TID 0,localhost):   java.lang.IllegalStateException:退出状态为2的子进程。   命令运行:/home/MSA2.R   java.util.NoSuchElementException:找不到密钥:1   rg.apache.spark.rpc.RpcTimeoutException:无法在120&gt;秒内收到任何回复。此超时由spark.rpc.askTimeout在&gt; org.apache.spark.rpc.RpcTimeout.org控制。$ apache $ spark $ rpc $ RpcTime&gt; out $$ createRpcTimeou tException(RpcTimeou t.scala:48)

调试问题没有多少例外。

任何人都可以建议这种方法是否正确。如果是,任何人都可以帮助解决问题,如果没有,请提出建议。

注意:我不想使用Spark R

上述代码的引用 - https://www.linkedin.com/pulse/executing-existing-r-scripts-from-spark-rutger-de-graaf

2 个答案:

答案 0 :(得分:1)

实际错误是:

  

java.lang.IllegalStateException:退出状态为2的子进程。   命令运行:/home/MSA2.R

确保MSA2.R存在于给定位置和运行spark作业的同一群集中。

当脚本无法访问设备时,通常会退出状态2.

答案 1 :(得分:1)

我已经解决了这个问题。我添加了

#!/usr/bin/Rscript

在RScript的第一行,它起作用了。