【问题标题】:SparkR from Rstudio - gives Error in invokeJava(isStatic = TRUE, className, methodName, ...) :来自 Rstudio 的 SparkR - 在 invokeJava(isStatic = TRUE, className, methodName, ...) 中给出错误:
【发布时间】:2016-12-16 05:22:03
【问题描述】:

我正在使用 RStudio。

创建会话后,如果我尝试使用 R 数据创建数据框,则会出错。

Sys.setenv(SPARK_HOME = "E:/spark-2.0.0-bin-hadoop2.7/spark-2.0.0-bin-hadoop2.7")
Sys.setenv(HADOOP_HOME = "E:/winutils")
.libPaths(c(file.path(Sys.getenv("SPARK_HOME"), "R", "lib"), .libPaths()))
Sys.setenv('SPARKR_SUBMIT_ARGS'='"sparkr-shell"')

library(SparkR)

sparkR.session(sparkConfig = list(spark.sql.warehouse.dir="C:/Temp"))

localDF <- data.frame(name=c("John", "Smith", "Sarah"), age=c(19, 23, 18))
df <- createDataFrame(localDF)

错误:

Error in invokeJava(isStatic = TRUE, className, methodName, ...) : 
  java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at org.apache.spark.sql.hive.client.IsolatedClientLoader.createClient(IsolatedClientLoader.scala:258)
    at org.apache.spark.sql.hive.HiveUtils$.newClientForMetadata(HiveUtils.scala:359)
    at org.apache.spark.sql.hive.HiveUtils$.newClientForMetadata(HiveUtils.scala:263)
    at org.apache.spark.sql.hive.HiveSharedState.metadataHive$lzycompute(HiveSharedState.scala:39)
    at org.apache.spark.sql.hive.HiveSharedState.metadataHive(HiveSharedState.scala:38)
    at org.apache.spark.sql.hive.HiveSharedState.externalCatalog$lzycompute(HiveSharedState.scala:46)
    at org.apache.spark.sql.hive.HiveSharedState.externalCatalog(HiveSharedState.scala:45)
    at org.a
>

TIA。

【问题讨论】:

  • 我在 Windows 8 上使用预构建的 spark2.0.0
  • 提前致谢! @Hack-R
  • 你是否有 JAVA_HOME 设置,如本文所述nishutayaltech.blogspot.in/2015/04/…
  • 嗨@abhiieor 谢谢,是的,我有一个配置好的 JAVA_HOME。我还关注了博客并执行了 spark 示例程序工作正常(给出正确的输出 3.14),所以这意味着在独立模式下设置本地 spark 很好。我正在 Rstudio 上为 POC 尝试 SparkR。对此有任何指示吗?
  • 您是否尝试按照此处的说明设置 Spark 会话? people.apache.org/~pwendell/spark-nightly/spark-master-docs/…

标签: r apache-spark hiveql apache-spark-mllib sparkr


【解决方案1】:

如果您没有使用过 SparkR 库但您正在使用 Spark, 我推荐 RStudio 制作的“sparklyr”库。

  1. 安装 RStudio 预览版。

  2. 安装库:

    install.packages("devtools")
    devtools::install_github('rstudio/sparklyr')
    
  3. 加载库并安装 spark。

    library(sparklyr)
    spark_install('1.6.2')
    

你可以在http://spark.rstudio.com/看到一个小插曲

【讨论】:

  • 但这是针对 1.6.1 版本的吧?它适用于 spark 2.0.0 吗?我还想为我的 POC 使用 SparkML 组件,然后在实际分析中使用。同时我会检查 sparklyr
【解决方案2】:

非常感谢您的帮助。

  1. 我必须在 PATH 变量中设置 hadoop_home 路径 (winutils/bin)。这应该有你的 winutils.exe 文件。所以当它 为 hive 默认 derby 创建 Metastore) 它能够调用 hive 类。
  2. 此外,我已将 hive 支持设置为 False,因为我没有使用它。

Sys.setenv(SPARK_HOME='E:/spark-2.0.0-bin-hadoop2.7/spark-2.0.0-bin-hadoop2.7',HADOOP_HOME='E:/winutils')

.libPaths(c(file.path(Sys.getenv('SPARK_HOME'), 'R', 'lib'),.libPaths()))

Sys.setenv('SPARKR_SUBMIT_ARGS'='"sparkr-shell"')

library(SparkR)
library(rJava)

sparkR.session(enableHiveSupport = FALSE,master = "local[*]", sparkConfig = list(spark.driver.memory = "1g",spark.sql.warehouse.dir="E:/winutils/bin/"))

df <- as.DataFrame(iris)

【讨论】:

  • 我遇到了同样的错误,不幸的是,这些修复仍然不能解决问题。还有其他想法吗?
  • 对我来说,禁用 Hive 支持开关也解决了这个问题。不需要对默认值进行其他更改。不确定这个解决方案有多普遍。
【解决方案3】:

这些是我在 RStudio 中执行的步骤,它对我有用:

Sys.setenv(SPARK_HOME="C:\\spark-1.6.1-bin-hadoop2.6")
.libPaths(c(file.path(Sys.getenv("SPARK_HOME"), "R", "lib"), .libPaths()))

library(SparkR)
sc <- sparkR.init(master="local")
sqlContext <- sparkRSQL.init(sc)

localDF <- data.frame(name=c("John", "Smith", "Sarah"), age=c(19, 23, 18))
df <- createDataFrame(sqlContext, localDF)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-28
    • 2017-02-11
    • 1970-01-01
    • 2015-09-16
    • 1970-01-01
    • 2012-05-03
    • 1970-01-01
    相关资源
    最近更新 更多