2015-06-20 84 views
2

如何从spark中调用包来利用R进行数据操作?SparkR和软件包

例子中,我试图访问我的HDFS test.csv如下

Sys.setenv(SPARK_HOME="/opt/spark14") 
library(SparkR) 
sc <- sparkR.init(master="local") 
sqlContext <- sparkRSQL.init(sc) 
flights <- read.df(sqlContext,"hdfs://sandbox.hortonWorks.com:8020  /user/root/test.csv","com.databricks.spark.csv", header="true") 

,但得到如下错误:

Caused by: java.lang.RuntimeException: Failed to load class for data source: com.databricks.spark.csv 

我试图通过以下选项

加载CSV包
Sys.setenv('SPARKR_SUBMIT_ARGS'='--packages com.databricks:spark-csv_2.10:1.0.3') 

但加载sqlContext时出现以下错误

Launching java with spark-submit command /opt/spark14/bin/spark-submit --packages com.databricks:spark-csv_2.10:1.0.3 /tmp/RtmpuvwOky /backend_port95332e5267b 
Error: Cannot load main class from JAR file:/tmp/RtmpuvwOky/backend_port95332e5267b 

任何帮助将不胜感激。

回答

2

因此,它看起来像通过设置SPARKR_SUBMIT_ARGS您正在覆盖默认值,即sparkr-shell。你也许可以做同样的事情,只需将sparkr-shell附加到SPARKR_SUBMIT_ARGS的末尾即可。与依靠罐子相比,这看起来不必要的复杂,所以我创建了一个JIRA来跟踪此问题(如果SparkR人员同意,我会尝试修复)https://issues.apache.org/jira/browse/SPARK-8506

注:另一个选项将使用sparkr命令+ --packages com.databricks:spark-csv_2.10:1.0.3,因为它应该工作。

+0

Thanks Holden.I正在尝试使用Rstudio.I试图识别与两个选项关联的语法,即向SPARKR_SUBMIT_ARGS中添加spark-shell并运行--packages命令。这些语法? – san71

+0

设置SPARKR_SUBMIT_ARGS的正确方法是做类似'Sys.setenv(SPARKR_SUBMIT_ARGS =“ - packages com.databricks:spark-csv_2.10:1.0.3 sparkr-shell”)''。我有一个公共关系公开将其添加到官方文档https://github.com/apache/spark/pull/6916 –

+0

谢谢Shivaram.This工程! – san71