2015-06-16 50 views
4

我已经安装了Spark-1.4.0。我还安装了它的R包SparkR,我可以通过Spark-shell和RStudio使用它,但是,我无法解决一个区别。通过RStudio加载com.databricks.spark.csv

当启动SparkR壳

./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:火花csv_2.10:1 .0.3在某种程度上,但我不知道如何做到这一点。有人能帮助我吗?

+0

跟着你上面的步骤,我无法读取sparkR壳csv文件。 org.apache.spark.SparkException:收到此错误, 所致作业已中止由于阶段失败:在阶段0 0(TID 0失落任务0.0:钽 SK 0级0.0失败1次,最近一次失败,localhost):java.lang.NullPointerException 你对此有什么想法吗? –

+0

我不知道,我不能复制错误。然而,你的sqlContext确实存在,该输入路径确实存在,它正确地发现com.databricks.spark.csv我知道,否则你就会有其他错误的消息。你能说明你的整个工作流程吗? –

+0

我在这里添加了详细信息http:// stackoverflow。com/questions/31050823/job-fails-on-load-com-databricks-spark-csv-in-sparkr-shell –

回答

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

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

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

我们没有找到如何加载远程罐子,因此我们已经下载了火花csv_2.11-1.0.3.jar。然而,在SparkJars中包含这一个不起作用,因为它在本地没有找到它的依赖关系。您也可以添加一个jar列表,​​但我们已经构建了一个包含所有依赖项的组件jar。当加载这一罐子,能够根据需要以加载该.csv文件:

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

错误:在RStudio中,returnStatus == 0也不是TRUE。 –

+0

感谢分享。此外,我发现它可以更简单地额外连接commons-csv.jar'sparkJars =“spark-csv_2.10-1.3.0.jar,commons-csv-1.2.jar”'而不是组装的胖罐子。 –

0

我已经下载火花1.4.0,通过命令行我去目录火花1.4.0/R,在那里我有建位于子目录pkg中SparkR包如下:

R CMD build --resave-data pkg 

这给你一个.tar文件,你可以在RStudio安装(与devtools,你应该能够在pkg安装包中好)。 在RStudio,你应该设置你的路径星火如下:

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的经验谈谈,我希望它有帮助吗?

0

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