2016-08-10 30 views
1

我正在使用RStudio。來自Rstudio的SparkR - 在invokeJava(isStatic = TRUE,className,methodName,...)中給出錯誤:

創建會話後,如果我嘗試使用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。

enter image description here

+0

我使用在Windows 8 –

+0

什麼是預建spark2.0.0 「TIA。」 ? –

+0

在此先感謝! @ Hack-R –

回答

1

如果你還沒有使用SparkR庫,但你用星火, 我推薦「sparklyr」庫由RStudio製造。

  1. 安裝預覽版本的RStudio。

  2. 安裝庫:

    install.packages("devtools") 
    devtools::install_github('rstudio/sparklyr') 
    
  3. 加載庫和安裝的火花。

    library(sparklyr) 
    spark_install('1.6.2') 
    

你可以看到http://spark.rstudio.com/

+0

但這是用於1.6.1版本的嗎?它會爲Spark 2.0.0工作嗎?另外我想爲我的POC使用SparkML組件,並隨後在實際分析中使用它。與此同時,我將檢查sparklyr –

5

所有許多感謝您的幫助一個小插曲。

  1. 我只好在路徑變量 (winutils/bin)中設置了hadoop_home路徑。這應該有你的winutils.exe文件。所以當 爲配置單元默認德比創建Metastore時)它可以調用配置單元 類。
  2. 此外,我已經設置爲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) 
+0

我有同樣的錯誤,不幸的是,這些修復程序仍不能解決問題。任何其他想法? – Gopala

+0

也爲我禁用Hive支持開關解決了這個問題。不需要其他默認的更改。不知道這個解決方案有多普遍。 – markcelo

1

這些都是我在做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)