RStudio中的SparkR:sparkR.session:10秒后JVM尚未就绪

问题描述

这真令人沮丧。我花了几天的时间查看所有在stackoverflow和Web上发现的问题,并逐步执行所有说明,但我无法弄清楚。我放弃了... 这是我的错误输出

Spark package found in SPARK_HOME: C:/spark/spark_3_0_1_bin_hadoop3_2 Launching java with spark-submit command
C:/spark/spark_3_0_1_bin_hadoop3_2/bin/spark-submit2.cmd  
--driver-memory "2g" sparkr-shell C:\Users\user\AppData\Local\Temp\RtmpgT8rjY\backend_port11e45fad26cf 
Error in sparkR.sparkContext(master,appName,sparkHome,sparkConfigMap: JVM is not ready after 10 seconds

(...为什么启动“ spark-submit2.cmd”而不是“ spark-submit”?)

运行此代码后:

> Sys.setenv(SPARK_HOME = "C:/spark/spark_3_0_1_bin_hadoop3_2"
> library(SparkR,lib.loc = c(file.path(Sys.getenv("SPARK_HOME"),"R","lib")))
> sparkR.session(master = "local[*]",sparkConfig = list(spark.driver.memory = "2g"))

到目前为止我所做的:

  1. 检查了最新的JRE版本(JRE_8u271),文件夹的权限和环境路径:一切正常
  2. rtools40-x86_64安装并设置路径,然后在RStudio中找到:C:\ rtools40 \ usr \ bin \ make.exe“
  3. 下载了最后一个预先构建的版本spark-3.0.1-bin-hadoop3.2.tgz,并在拥有所有者许可的情况下将其解压缩到c:\ spark(文件名称中没有空格!)),为了安全起见,我已尽可能用下划线_替换了文件名称中的所有标点符号请参阅上面的脚本。然后设置环境路径
  4. 检查是否已为C:\ spark \ spark_3_0_1_bin_hadoop3_2设置了所有用户的所有权限:确定
  5. 手动解压缩sparkr.zip(包含在C:\ spark \ spark_3_0_1_bin_hadoop3_2 \ R \ lib中)到我的R库C:\ Program Files \ R \ R-4.0.3 \ library
  6. 下载了winutils for hadoop v 3.0.0,并在C:\ winutils \ bin中解压并设置了路径

通过Windows Prompt成功启动sparkR。我还启动了火花提交,一切正常。

我的环境路径:

  • JAVA_HOME:C:\ Java
  • R_HOME:C:\ Program Files \ R \ R-4.0.3 \ bin \ x64
  • RTools:C:\ rtools40
  • SPARK_HOME:C:\ spark \ spark_3_0_1_bin_hadoop3_2
  • HADOOP_HOME:C:\ winutils
  • 路径:C:\ Program Files \ R \ R-4.0.3 \ bin \ x64; C:\ rtools40; C:\ rtools40 \ mingw64 \ bin; C:\ Java; [...]

我也使用 Sparklyr ,并且效果很好,可以在RStudio中正常连接!但不是 SparkR ...

如何在RStudio中初始化SparkR并使用其功能

RStudio Version 1.3.1093
> sessionInfo()
R version 4.0.3 (2020-10-10)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 19041)
Matrix products: default
locale:
[1] LC_COLLATE=Italian_Italy.1252  LC_CTYPE=Italian_Italy.1252   
[3] LC_MONETARY=Italian_Italy.1252 LC_NUMERIC=C                  
[5] LC_TIME=Italian_Italy.1252    
attached base packages:
[1] stats     graphics  Grdevices utils     datasets  methods   base     
other attached packages:
[1] SparkR_3.0.1
loaded via a namespace (and not attached):
[1] compiler_4.0.3 tools_4.0.3

谢谢 加布里埃尔

解决方法

最后我知道了!

我无法解释为什么,但是我只在Sys.setnev中添加了一个'SPARKR_SUBMIT_ARGS'来读取csv,正如我在Spark 1的一些旧主题中所发现的那样,here并初始化了sparkR会话。

这是我的新代码行:

SPARK_HOME = "C:/spark/spark_3_0_1_bin_hadoop3_2"
Sys.setenv('SPARKR_SUBMIT_ARGS'='"--packages" "com.databricks:spark-csv_2.10:1.4.0" "sparkr-shell"')
library(SparkR,lib.loc = c(file.path(Sys.getenv("SPARK_HOME"),"R","lib"))) 
sparkR.session(master = "local",sparkHome = SPARK_HOME) 

此外,当我在使用read.df函数读取csv时遇到问题时,我更改了不带\ BIN文件夹的hadoop路径,如下所示,现在一切正常:

HADOOP_HOME :C:\ winutils

希望对遇到我同样问题的所有人有用。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...