2015-06-16 88 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文件在那裏。