【问题标题】:Failed to detect version from SPARK_HOME or SPARK_HOME_VERSION无法从 SPARK_HOME 或 SPARK_HOME_VERSION 检测版本
【发布时间】:2017-02-16 15:14:22
【问题描述】:

我正在尝试关注 tutorial 在 DSX 上使用来自 RStudio 的 spark,但我遇到了以下错误:

> library(sparklyr)
> sc <- spark_connect(master = "CS-DSX")
Error in spark_version_from_home(spark_home, default = spark_version) : 
  Failed to detect version from SPARK_HOME or SPARK_HOME_VERSION. Try passing the spark version explicitly.

我从 RStudio 中的连接到 spark 对话框中获取了上面的代码 sn-p:

于是我看了一下SPARK_HOME

> Sys.getenv("SPARK_HOME")
[1] "/opt/spark"

好的,让我们检查目录是否存在:

> dir("/opt")
[1] "ibm"

我猜这是问题的原因?


注意:在 stackoverflow 上有一些类似的问题,但都不是关于 IBM 的数据科学体验 (DSX)。

更新 1:

我尝试了以下方法:

> sc <- spark_connect(config = "CS-DSX")
Error in config$spark.master : $ operator is invalid for atomic vectors

更新 2:

我的 config.yml 的摘录。请注意,我的 Spark 服务还有很多,我刚刚粘贴了第一个:

default:
    method: "shell"

CS-DSX:
    method: "bluemix"
    spark.master: "spark.bluemix.net"
    spark.instance.id: "7a4089bf-3594-4fdf-8dd1-7e9fd7607be5"
    tenant.id: "sdd1-7e9fd7607be53e-39ca506ba762"
    tenant.secret: "xxxxxx"
    hsui.url: "https://cdsx.ng.bluemix.net"

请注意,我的 config.yml 是为我生成的。

更新 3:

我的 .Rprofile 如下所示:

# load sparklyr library
library(sparklyr)

# setup SPARK_HOME
if (nchar(Sys.getenv("SPARK_HOME")) < 1) {
  Sys.setenv(SPARK_HOME = "/opt/spark")
}

# setup SparkaaS instances
options(rstudio.spark.connections = c("CS-DSX","newspark","cleantest","4jan2017","Apache Spark-4l","Apache Spark-3a","ML SPAAS","Apache Spark-y9","Apache Spark-a8"))

请注意,我的 .Rprofile 是为我生成的。

更新 4:

我卸载了 sparklyr 并重新启动了两次会话。接下来我尝试运行:

library(sparklyr)
library(dplyr)
sc <- spark_connect(config = "CS-DSX")

但是,上述命令挂起。我停止了命令并检查了似乎没问题的 sparklyr 版本:

> ip <- installed.packages()
> ip[ rownames(ip) == "sparklyr", c(0,1,3) ]
   Package    Version 
"sparklyr"   "0.4.36" 

【问题讨论】:

  • 有两个问题:- 1. DSX Rstudio 生成的代码假设有 config = ,如果它连接到 bluemix spark 服务。我为此提出了缺陷。 2. 无法使用config连接,能否分享一下你的config.yml文件的内容。 Pleawse 掩盖租户的秘密。
  • 您正在尝试连接到远程 Spark 服务,因此 SPARK_HOME 的本地值没有意义。显然,一些库仍然试图从 SPARK_HOME 猜测 Spark 版本。可能的行动方案: 1. 了解如何在配置中指定 Spark 版本。 2. 在本地将 SPARK_HOME 设置为表示远程 Spark 版本的值。该目录不必在本地存在。
  • 奇怪的是为我生成的 .Rprofile 正在设置 SPARK_HOME。
  • 当我使用 install.packages("sparklyr") 从 CRAN 安装 0.5.2 并覆盖 sparklyr(0.4.36) 的默认安装时,我可以重现您的问题。 > packageVersion("sparklyr") [1] ‘0.4.36’ 请使用 remove.packages("sparklyr") 删除您的 sparklyr 版本并重新启动 rstudio 两次,以便将 sparklyr 包重新初始化为 sparklyr。
  • 好的,这让我更进一步。我已经更新了问题(更新 4)。

标签: data-science-experience


【解决方案1】:

如果这是您的意图,您不能使用主参数连接到 bluemix spark 服务,因为您的内核是在 config.yml 文件中定义的,您应该使用配置参数来连接。

config.yml 加载了您可用的内核信息(spark 实例)。

Apache Spark-ic:
method: "bluemix"
spark.master: "spark.bluemix.net"
spark.instance.id: "41a2e5e9xxxxxx47ef-97b4-b98406426c07"
tenant.id: "s7b4-b9xxxxxxxx7e8-2c631c8ff999"
tenant.secret: "XXXXXXXXXX"
hsui.url: "https://cdsx.ng.bluemix.net"

请使用配置 sc &lt;- spark_connect(config = "Apache Spark-ic")

按照教程中的建议:- http://datascience.ibm.com/blog/access-ibm-analytics-for-apache-spark-from-rstudio/

仅供参考, 默认情况下,您已连接到,我正在寻找如何使用配置参数更改版本。

> version <- invoke(spark_context(sc), "version")

print(version)

[1] "2.0.2"

谢谢, 查尔斯。

【讨论】:

  • 不幸的是,这对我不起作用。我已经用 spark_connect 的输出更新了这个问题。我还提供了 RStudio spark 连接的屏幕截图 - 这是我从中获取代码的地方。如果它把用户引向错误的方向,我们应该修复这个集成吗?
【解决方案2】:

我遇到了同样的问题并修复如下:

  1. 转到 C:\Users\USER_NAME\AppData\Local/spark/ 并删除目录中的所有内容
  2. 然后,在 R 控制台中运行:
if (!require(shiny)) install.packages("shiny"); 
library(shiny)
if (!require(sparklyr)) install.packages("sparklyr"); 
library(sparklyr)
spark_install()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-18
    • 2014-06-24
    • 1970-01-01
    • 2023-02-24
    • 2020-05-11
    • 2015-09-14
    • 2018-06-02
    • 1970-01-01
    相关资源
    最近更新 更多