我正在尝试使用Sparklyr将R连接到Spark。
我按照rstudio博客的教程
我尝试使用
安装sparklyr install.packages("sparklyr")
这很好但在另一篇文章中,我看到sparklyr_0.4版本中有一个错误。所以我按照说明使用
devtools::install_github("rstudio/sparklyr")
也很好,现在我的闪光版本是sparklyr_0.4.16。
我按照rstudio教程下载并使用
安装sparkspark_install(version = "1.6.2")
当我尝试使用
首次连接到spark时sc <- spark_connect(master = "local")
收到以下错误。
Created default hadoop bin directory under: C:\Users\rkaku\AppData\Local\rstudio\spark\Cache\spark-1.6.2-bin-hadoop2.6\tmp\hadoop
Error:
To run Spark on Windows you need a copy of Hadoop winutils.exe:
1. Download Hadoop winutils.exe from:
https://github.com/steveloughran/winutils/raw/master/hadoop-2.6.0/bin/
2. Copy winutils.exe to C:\Users\rkaku\AppData\Local\rstudio\spark\Cache\spark-1.6.2-bin-hadoop2.6\tmp\hadoop\bin
Alternatively, if you are using RStudio you can install the RStudio Preview Release,
which includes an embedded copy of Hadoop winutils.exe:
https://www.rstudio.com/products/rstudio/download/preview/**
然后我下载了winutils.exe并将其放在C:\Users\rkaku\AppData\Local\rstudio\spark\Cache\spark-1.6.2-bin-hadoop2.6\tmp\hadoop\bin
中 - 这是在说明中给出的。
我尝试再次连接火花。
sc <- spark_connect(master = "local",version = "1.6.2")
但是我收到了以下错误
Error in force(code) :
Failed while connecting to sparklyr to port (8880) for sessionid (8982): Gateway in port (8880) did not respond.
Path: C:\Users\rkaku\AppData\Local\rstudio\spark\Cache\spark-1.6.2-bin-hadoop2.6\bin\spark-submit2.cmd
Parameters: --class, sparklyr.Backend, --packages, "com.databricks:spark-csv_2.11:1.3.0", "C:\Users\rkaku\Documents\R\R-3.2.3\library\sparklyr\java\sparklyr-1.6-2.10.jar", 8880, 8982
Traceback:
shell_connection(master = master, spark_home = spark_home, app_name = app_name, version = version, hadoop_version = hadoop_version, shell_args = shell_args, config = config, service = FALSE, extensions = extensions)
start_shell(master = master, spark_home = spark_home, spark_version = version, app_name = app_name, config = config, jars = spark_config_value(config, "spark.jars.default", list()), packages = spark_config_value(config, "sparklyr.defaultPackages"), extensions = extensions, environment = environment, shell_args = shell_args, service = service)
tryCatch({
gatewayInfo <- spark_connect_gateway(gatewayAddress, gatewayPort, sessionId, config = config, isStarting = TRUE)
}, error = function(e) {
abort_shell(paste("Failed while connecting to sparklyr to port (", gatewayPort, ") for sessionid (", sessionId, "): ", e$message, sep = ""), spark_submit_path, shell_args, output_file, error_file)
})
tryCatchList(expr, classes, parentenv, handlers)
tryCatchOne(expr, names, parentenv, handlers[[1]])
value[[3]](cond)
abort_shell(paste("Failed while connecting to sparklyr to port (", gatewayPort, ") for sessionid (", sessionId, "): ", e$message, sep = ""), spark_submit_path, shell_args, output_file, error_file)
---- Output Log ----
The system cannot find the path specified.
有人可以帮我解决这个问题。我过去两周没有太多帮助就坐在这个问题上。真的很感激任何可以帮我解决这个问题的人。
答案 0 :(得分:3)
我终于弄明白了这个问题,我很高兴自己可以做到这一切。很明显有很多谷歌搜索。
问题出在Winutils.exe上。
R studio没有给出放置winutils.exe的正确位置。从我的问题 - 位置粘贴到粘贴winutils.exe是C:\ Users \ rkaku \ AppData \ Local \ rstudio \ spark \ Cache \ spark-1.6.2-bin-hadoop2.6 \ tmp \ hadoop \ bin。
但谷歌搜索时我发现有一个日志文件会在临时文件夹中创建,以检查问题,如下所示。
java.io.IOException:找不到可执行文件 C:\ Users \ rkaku \ AppData \ Local \ rstudio \ spark \ Cache \ spark-1.6.2-bin-hadoop2.6 \ bin \ bin \ winutils Hadoop二进制文件中的.exe
日志文件中给出的位置与R Studio建议的位置不同:)最后在火花日志文件引用的位置插入winutils.exe后,我能够成功连接到Sparklyr ...... wohooooooo !!!!我不得不说仅仅连接到Spark已经有3个星期的时间了,但都值得:)
答案 1 :(得分:0)
请注意任何代理
Sys.getenv("http_proxy")
Sys.setenv(http_proxy='')
对我有用吗