【问题标题】:Using SparklyR Spark install to run Scala code in R使用 SparklyR Spark install 在 R 中运行 Scala 代码
【发布时间】:2017-04-26 15:53:56
【问题描述】:

希望使用 sparklyr Spark 安装中包含的自定义 scalac(Scala 编译器);在 RStudio SparkUI 选项卡中找到(或来自 spark_web(sc))>> 环境 >> /jars/scala-compiler-2.11.8.jar 作为“系统环境”——而不是在基本目录中单独下载和安装 scalac——如 the "hello world" example found here 中所建议的那样并从 RStudio 关于创建扩展的页面链接http://spark.rstudio.com/extensions.html

这是我目前使用的 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)

【问题讨论】:

    标签: r scala apache-spark rstudio sparklyr


    【解决方案1】:

    错误是因为工作目录错误,不能是R目录。

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

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

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

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

    sparklyr::compile_package_jars()
    

    (重要文件-)描述文件:您可以自己创建或复制并粘贴 sparhello 示例中可用的文件

    之后,构建你的包,然后检查你的工作目录

    getwd()
    

    你必须找到它指向你创建它的包("/home/"user"/sparkhello") 如果不改变它

    setwd("/home/user/sparkhello")
    

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

    【讨论】:

      猜你喜欢
      • 2018-08-23
      • 2020-01-04
      • 2016-11-11
      • 2017-03-03
      • 1970-01-01
      • 2019-11-15
      • 2020-05-22
      • 2017-11-18
      • 1970-01-01
      相关资源
      最近更新 更多