我安装了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,但我不知道如何做到这一点。有人能帮助我吗?
答案 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文件在那里。