2015-09-30 9 views
5

Wie laden Sie CSV-Datei in SparkR auf RStudio? Im Folgenden sind die Schritte aufgeführt, die ich ausführen musste, um SparkR auf RStudio auszuführen. Ich habe read.df verwendet, um .csv nicht sicher zu lesen, wie man das sonst schreibt. Nicht sicher, ob dieser Schritt RDDs erstellt wird.Wie CSV-Datei in SparkR auf RStudio laden?

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

Ich erhalte Fehler:

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

Antwort

3

Funken 2.0.0+:

Sie können CSV-Datenquelle verwenden:

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

ohne Belastung spark-csv.

Ursprüngliche Antwort:

Soweit ich kann Ihnen sagen, eine falsche Version von spark-csv verwenden. Vordefinierte Versionen von Spark verwenden Scala 2.10, aber Sie verwenden Spark CSV für Scala 2.11. Versuchen Sie stattdessen:

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

Ich versuchte neue Funken-csv von oben. Jetzt, wenn ich Daten ausführen <- read.df, erhalte ich diesen Fehler: Fehler: returnStatus == 0 ist nicht wahr. – sharp

+0

Können Sie einen vollständigen StackTrace bereitstellen? – zero323

+0

Beziehen Sie sich auf R-Konsolenausgänge? – sharp

1

ich dieses Problem erfolgreich zu lösen, indem die commons-csv-1.2.jar zusammen mit dem Funken csv-Paket bereitstellt.

Scheinbar verwendet Spark-CSV Commons-CSV, ist aber nicht Paket mit ihm.

Das folgende SPARKR_SUBMIT_ARGS löste das Problem (ich benutze --jars statt --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"') 

In der Tat, der eher obskure Fehler

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

ist klarer den R-Shell direkt anstelle von R-Studio unter Verwendung und klar Zustand

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

Die benötigte commons-csv Bechergefäß finden Sie hier: https://commons.apache.org/proper/commons-csv/download_csv.cgi

1

Ich schätze jeden Input und Lösungen !!! Ich habe eine andere Möglichkeit gefunden, eine .csv-Datei in SparkR RStudio zu laden. Hier ist es:

#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

Ihre Lösung funktioniert, ist aber nicht skalierbar: Wenn Ihr Patienten-Set nicht in den Speicher passt, können Sie R nicht laden und in SparkR umwandeln, aber Sie sollten es immer noch direkt in SparkR laden können . –

+0

Guter Punkt. Ich bin darauf gestoßen. Mit den Antworten des Benutzers unten erhalte ich jedoch Fehler. Ich versuche zu sehen, wie ich die Daten direkt in SparkR laden kann. – sharp

+0

Die Sys.setenv ('SPARKR_SUBMIT_ARGS' = '"- Pakete" ... funktioniert gut für mich. –