在Windows环境下从Rstudio加载spark-csv

时间:2016-04-21 20:13:30

标签: r apache-spark sparkr

任何人都可以告诉我是否可以在Windows 7环境下使用R studio从SparkR导入spark-csv包? 我的本地机器有R 3.2.2,spark-1.6.1-bin-hadoop2.6和java安装,但不是maven,scala等。 我不知道我是否想念任何东西才能打电话给spark-csv?我应该安装这个包(.jar文件)并放入一些文件夹吗?

这是我的剧本:

library(rJava)
Sys.setenv(SPARK_HOME = 'C:/Users/***/spark-1.6.1-bin-hadoop2.6')

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

Sys.setenv('SPARKR_SUBMIT_ARGS'='"--packages" "com.databricks:spark-csv_2.11:1.4.0" "sparkr-shell"')

sc <- sparkR.init(master = "local[*]", sparkEnvir = list(spark.driver.memory="2g"))
sqlContext <- sparkRSQL.init(sc)

我能够调用sparkR库并启动一个sc,这里是消息:

Launching java with spark-submit command C:/Users/***/spark-1.6.1-bin-hadoop2.6/bin/spark-submit.cmd   --driver-memory "2g" "--packages" "com.databricks:spark-csv_2.11:1.4.0" "sparkr-shell" C:\Users\hwu\AppData\Local\Temp\2\Rtmp46MVve\backend_port13b423eed9c 

然后,当我尝试加载本地csv文件时,它失败了。我已经将csv文件放在R的当前工作目录下了     flight&lt; - read.df(sqlContext,“nycflights13.csv”,“com.databricks.spark.csv”,header =“true”)

我收到此错误消息:

Error in invokeJava(isStatic = TRUE, className, methodName, ...) : 
org.apache.spark.SparkException: Job aborted due to stage failure: Task 0 in stage 0.0 failed 1 times, most recent failure: Lost task 0.0 in stage 0.0 (TID 0, localhost): java.lang.NullPointerException
at java.lang.ProcessBuilder.start(Unknown Source)
at org.apache.hadoop.util.Shell.runCommand(Shell.java:482)
at org.apache.hadoop.util.Shell.r...(Shell.java:455)
at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:715)
at org.apache.hadoop.fs.FileUtil.chmod(FileUtil.java:873)
at org.apache.hadoop.fs.FileUtil.chmod(FileUtil.java:853)
at org.apache.spark.util.Utils$.fetchFile(Utils.scala:406)
at org.apache.spark.executor.Executor$$anonfun$org$apache$spark$executor$Executor$$updateDependencies$5.apply(Executor.scala:405)
at org.apache.spark.executor.Executor$$anonfun$org$apache$spark$executor$Executor$$updateDependencies$5.apply(Executor.scala:397)
at scala.collection.TraversableLike$WithFilter$$anonfun$foreach$1.apply(TraversableLike.scala:7

感谢您的任何建议。

2 个答案:

答案 0 :(得分:0)

instead of this:

Sys.setenv('SPARKR_SUBMIT_ARGS'='"--packages" "com.databricks:spark-csv_2.11:1.4.0" "sparkr-shell"')

try this:

Sys.setenv(SPARKR_SUBMIT_ARGS="--packages com.databricks:spark-csv_2.11:1.4.0 sparkr-shell"

or perhaps this

sc <- sparkR.init(master="local[*]",appName="yourapp",sparkPackages="com.databricks:spark-csv_2.11:1.4.0")

答案 1 :(得分:0)

预构建的Spark发行版(如您正在使用的发行版)仍然使用Scala 2.10构建,而不是2.11。因此,您需要一个适用于Scala 2.10的spark-csv版本,而不是Scala 2.11(您在代码中使用的版本)。将com.databricks:spark-csv_2.11:1.4.0更改为com.databricks:spark-csv_2.10:1.4.0,您应该没事(另请参阅my answer in a relevant SO question)。

我从未在Windows中测试过Spark,但我最近在blog post中汇总了一个在RStudio中使用SparkR的简短演示,您可能会觉得这很有用。