2015-09-30 15 views
5

Come si carica il file csv in SparkR su RStudio? Di seguito sono riportati i passaggi che dovevo eseguire per eseguire SparkR su RStudio. Ho usato read.df per leggere .csv non so in quale altro modo scrivere questo. Non sono sicuro se questo passaggio è considerato per creare RDD.Come caricare il file csv in SparkR su RStudio?

#Set sys environment variables 
Sys.setenv(SPARK_HOME = "C:/Users/Desktop/spark/spark-1.4.1-bin-hadoop2.6") 
.libPaths(c(file.path(Sys.getenv("SPARK_HOME"), "R", "lib"), .libPaths())) 

#Sys.setenv('SPARKR_SUBMIT_ARGS'='"--packages" "com.databricks:spark-csv_2.10:1.0.3" "sparkr-shell"') 

#Load libraries 
library(SparkR) 
library(magrittr) 

sc <- sparkR.init(master="local") 
sc <- sparkR.init() 
sc <- sparkR.init(sparkPackages="com.databricks:spark-csv_2.11:1.0.3") 
sqlContext <- sparkRSQL.init(sc) 

data <- read.df(sqlContext, "C:/Users/Desktop/DataSets/hello_world.csv", "com.databricks.spark.csv", header="true") 

sto ottenendo errore:

Error in writeJobj(con, object) : invalid jobj 1 

risposta

3

Spark 2.0.0+:

È possibile utilizzare origine dati csv:

loadDF(sqlContext, path="some_path", source="csv", header="true") 

senza caricare spark-csv.

risposta originale:

Per quanto mi riguarda posso dire che si sta utilizzando una versione sbagliata di spark-csv. Le versioni predefinite di Spark utilizzano Scala 2.10, ma stai utilizzando Spark CSV per Scala 2.11. Prova a modificare:

sc <- sparkR.init(sparkPackages="com.databricks:spark-csv_2.10:1.2.0") 
+0

Ho provato nuova scintilla-csv dall'alto. Ora quando eseguo i dati <- read.df, ottengo questo errore: Error: returnStatus == 0 non è TRUE. – sharp

+0

Potresti fornire uno stacktrace completo? – zero323

+0

Ti riferisci alle uscite della console R? – sharp

1

ho risolvere con successo questo problema fornendo la comuni-CSV-1.2.jar insieme al pacchetto scintilla csv.

Apparentemente, spark-csv utilizza commons-csv ma ​​non è un pacchetto con esso.

L'utilizzo del seguente SPARKR_SUBMIT_ARGS ha risolto il problema (io uso --jars piuttosto che --packages).

Sys.setenv('SPARKR_SUBMIT_ARGS'='"--jars" "/usr/lib/spark-1.5.1-bin-hadoop2.6/lib/spark-csv_2.11-1.2.0.jar,/usr/lib/spark-1.5.1-bin-hadoop2.6/lib/commons-csv-1.2.jar" "sparkr-shell"') 

Infatti, l'errore piuttosto oscura

Error in writeJobj(con, object) : invalid jobj 1 

è più chiara utilizzando la shell R direttamente invece da R Studio e chiaramente stato

java.lang.NoClassDefFoundError: org/apache/commons/csv/CSVFormat 

vaso I necessari commons-csv can essere trovato qui: https://commons.apache.org/proper/commons-csv/download_csv.cgi

1

Apprezzo tutti gli input e le soluzioni !!! Ho trovato un altro modo per caricare il file .csv in SparkR RStudio. Eccolo:

#set sc 
sc <- sparkR.init(master = "local") 
sqlContext <- sparkRSQL.init(sc) 

#load .csv 
patients <- read.csv("C:/...") #Insert your .csv file path 

df <- createDataFrame(sqlContext, patients) 
df 
head(df) 
str(df) 
+2

La tua soluzione funziona, ma non è scalabile: quando i tuoi pazienti impostati non si adattano alla memoria, non sarai in grado di caricare R e convertire in SparkR, ma dovresti comunque essere in grado di caricarlo direttamente su SparkR . –

+0

Buon punto. Mi sono imbattuto in questo. Tuttavia, con le risposte degli utenti di seguito, ricevo errori. Cercando di vedere come posso caricare i dati direttamente in SparkR. – sharp

+0

Sys.setenv ('SPARKR_SUBMIT_ARGS' = '"- packages" ... funziona bene per me. –