使用SparklyR Spark安装在R中运行Scala代码

时间:2016-12-11 18:44:00

标签: r scala apache-spark rstudio sparklyr

希望使用scalac Spark install附带的自定义sparklyr(Scala编译器);在RStudio SparkUI选项卡中找到(或从spark_web(sc))>>环境>> /jars/scala-compiler-2.11.8.jar作为“系统环境” - 而不是在基本目录中单独下载和安装scalac - 如the "hello world" example found here中所建议,并从RStudio的创建扩展页面{{3} }。

这是我到目前为止使用的Ubuntu,但是在下面的错误中停了下来。我设置了一个与上面“hello world”示例中使用的Github-repo完全相同的目录。知道如何在不安装其中一个建议的基本路径文件夹的情况下解决此错误 - 即/opt/scala/opt/local/scala/usr/local/scala~/scala(仅限Windows) ?想要为给定用户使用sparklyr本机安装和相对路径。

library(titanic)
library(sparklyr)

# spark_web(sc) # Opens Web Console to find Scala Version and scalac

# Sets Working Directory to R folder of file
setwd(dirname(rstudioapi::getActiveDocumentContext()$path))

sparkVers <- '2.0.0'; scalaVers <- '2.11.8'; packageName <- "sparkhello"
packageJarExtR <- spark_compilation_spec(spark_version = sparkVers, 
                   spark_home = spark_home_dir(), 
                   scalac_path = paste0(spark_home_dir(),"/jars","/scala-compiler-", scalaVers, ".jar"), #
                   scala_filter = NULL, 
                   jar_name = sprintf(paste0(getwd(),"/inst/java/", packageName, "-%s-%s.jar"), sparkVers, scalaVers) 
                   )

sparklyr::compile_package_jars(spec = packageJarExtR)

# Error: No root directory found. Test criterion:
#   Contains a file 'DESCRIPTION' with contents matching '^Package: '
# In addition: Warning message:
#   running command ''/mnt/home/eyeOfTheStorm/.cache/spark/
#   spark-2.0.0-bin-hadoop2.7/jars/scala-compiler-2.11.8.jar' 
#     -version 2>&1' had status 126



### 

library(sparkhello) 

# Connect to local spark cluster and load data
sc <- spark_connect(master = "local", version = "2.0.0")
titanic_tbl <- copy_to(sc, titanic_train, "titanic", overwrite = TRUE)

1 个答案:

答案 0 :(得分:0)

由于工作目录错误而发生错误,因此一定不能是R目录。

首先,你必须创建一个R包(https://www.youtube.com/watch?v=9PyQlbAEujY)“作为sparklyr扩展包”,并将其命名为sparkhello。 然后,在其中创建三个文件夹:

1)R文件夹:包含hello.R,它是scala代码的R warper和dependencies.R文件(如hello world示例所示)

2)JAVA文件夹:在.scala文件中包含你的scala代码

3)inst / java文件夹:稍后它将包含你的jar,它们将在执行后自动创建:

sparklyr::compile_package_jars()

(重要文件 - )描述文件:您可以自己创建或复制并通过sparhello示例提供的文件

之后,构建您的包,然后使用

检查您的工作目录
getwd()

你必须找到它指向你创建它的包(“/ home /”user“/ sparkhello”),如果没有改变它

setwd("/home/user/sparkhello")

在设置正确的工作目录后重新执行上面提到的代码