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

Loading com.databricks.spark.csv via RStudio

我已经安装了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,但我不知道该怎么做。有人可以帮助我吗?

我和我的同事找到了解决方案。我们已经像这样初始化了 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")

我已经下载了 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的经验,希望对你有帮助?

这是正确的语法(经过数小时的尝试): (注意 - 你必须关注第一行。注意双引号)

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")

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