通过RStudio加载com.databricks.spark.csv

时间:2015-06-16 14:21:07

标签: rstudio sparkr

我安装了Spark-1.4.0。我也安装了它的R包SparkR,我可以通过Spark-shell和RStudio使用它,但是,有一个区别我无法解决。

启动SparkR-shell时

./bin/sparkR --master local[7] --packages com.databricks:spark-csv_2.10:1.0.3

我可以按如下方式阅读.csv文件

flights <- read.df(sqlContext, "data/nycflights13.csv", "com.databricks.spark.csv", header="true")

不幸的是,当我通过RStudio启动SparkR(正确设置我的SPARK_HOME)时,我收到以下错误消息:

15/06/16 16:18:58 ERROR RBackendHandler: load on 1 failed
Caused by: java.lang.RuntimeException: Failed to load class for data source: com.databricks.spark.csv

我知道我应该在某种程度上加载com.databricks:spark-csv_2.10:1.0.3,但我不知道如何做到这一点。有人能帮助我吗?

4 个答案:

答案 0 :(得分:3)

这是正确的语法(经过几小时的尝试): (注意 - 你要专注于第一行。注意双引号)

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

library(SparkR)
library(magrittr)

# Initialize SparkContext and SQLContext
sc <- sparkR.init(appName="SparkR-Flights-example")
sqlContext <- sparkRSQL.init(sc)


# The SparkSQL context should already be created for you as sqlContext
sqlContext
# Java ref type org.apache.spark.sql.SQLContext id 1

# Load the flights CSV file using `read.df`. Note that we use the CSV reader Spark package here.
flights <- read.df(sqlContext, "nycflights13.csv", "com.databricks.spark.csv", header="true")

答案 1 :(得分:2)

我和我的同事找到了解决方案。我们已经像这样初始化了sparkContext:

sc <- sparkR.init(appName="SparkR-Example",sparkEnvir=list(spark.executor.memory="1g"),sparkJars="spark-csv-assembly-1.1.0.jar")

我们没有找到如何加载远程jar,因此我们已经下载了spark-csv_2.11-1.0.3.jar。但是在sparkJars中包含这个不起作用,因为它没有在本地找到它的依赖。您也可以添加jar列表,​​但我们已经构建了一个包含所有依赖项的程序集jar。加载此jar时,可以根据需要加载.csv文件:

flights <- read.df(sqlContext, "data/nycflights13.csv","com.databricks.spark.csv",header="true")

答案 2 :(得分:0)

我已经下载了Spark-1.4.0,通过命令行我去了Spark-1.4.0 / R目录,在那里我构建了位于子目录pkg中的SparkR包,如下所示:

R CMD build --resave-data pkg

这为您提供了一个.tar文件,可以在RStudio中安装(使用devtools,您也应该可以在pkg中安装该软件包)。 在RStudio中,您应该按如下方式设置Spark的路径:

Sys.setenv(SPARK_HOME="path_to_spark/spark-1.4.0")
.libPaths(c(file.path(Sys.getenv("SPARK_HOME"), "R", "lib"), .libPaths()))
library(SparkR)

你应该准备好了。我只能谈谈mac经验,我希望它有帮助吗?

答案 3 :(得分:0)

如果您在上面尝试过Pragith的解决方案后仍然遇到问题。您要加载的csv文件很可能不在当前的RStudio工作目录中。使用getwd()检查RStudio目录并确保csv文件在那里。