4

我已经安装了 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

4 回答 4

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")
于 2015-06-26T19:16:06.483 回答
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")
于 2015-06-17T13:58:03.347 回答
0

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

R CMD build --resave-data pkg

这为您提供了一个可以在 RStudio 中安装的 .tar 文件(使用 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经验谈,希望对你有帮助?

于 2015-06-18T07:51:14.803 回答
0

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

于 2015-12-09T20:08:05.613 回答