2016-07-29 34 views
4

Ich versuche, eine CSV-Datei in SparkR (mit Spark 2.0.0) zu lesen - & versucht, mit den neu hinzugefügten Funktionen zu experimentieren.Spark 2.0.0: SparkR CSV-Import

Mit RStudio hier.

Ich erhalte einen Fehler beim "Lesen" der Quelldatei.

Mein Code:

Sys.setenv(SPARK_HOME = "C:/spark-2.0.0-bin-hadoop2.6") 
library(SparkR, lib.loc = c(file.path(Sys.getenv("SPARK_HOME"), "R", "lib"))) 
sparkR.session(master = "local[*]", appName = "SparkR") 
df <- loadDF("F:/file.csv", "csv", header = "true") 

Ich erhalte eine Fehlermeldung bei an der loadDF Funktion.

Der Fehler:

loadDF("F:/file.csv", "csv", header = "true") 

Error in invokeJava(isStatic = TRUE, className, methodName, ...) : java.lang.reflect.InvocationTargetException at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:422) at org.apache.spark.sql.hive.client.IsolatedClientLoader.createClient(IsolatedClientLoader.scala:258) at org.apache.spark.sql.hive.HiveUtils$.newClientForMetadata(HiveUtils.scala:359) at org.apache.spark.sql.hive.HiveUtils$.newClientForMetadata(HiveUtils.scala:263) at org.apache.spark.sql.hive.HiveSharedState.metadataHive$lzycompute(HiveSharedState.scala:39) at org.apache.spark.sql.hive.HiveSharedState.metadataHive(HiveSharedState.scala:38) at org.apache.spark.sql.hive.HiveSharedState.externalCatalog$lzycompute(HiveSharedState.scala:46) at org.apache.spark.sql.hive.HiveSharedSt

Bin ich hier etwas Spezifikation fehlt? Irgendwelche Hinweise, um fortzufahren, würden geschätzt werden.

Antwort

2

ich das gleiche Problem haben. Aber Similary Problem mit diesem einfachen Code

createDataFrame(iris) 

Mai bei der Installation einige falsch sein?

UPD. JA ! Ich finde eine Lösung.

Diese Lösung auf dieser Basis: Apache Spark MLlib with DataFrame API gives java.net.URISyntaxException when createDataFrame() or read().csv(...)

Für R nur Sitzung durch diesen Code starten:

sparkR.session(sparkConfig = list(spark.sql.warehouse.dir="/file:C:/temp")) 
+0

Danke Yury! Diese Problemumgehung half. – AC24

0

Vielleicht sollten Sie versuchen, die CSV mit dieser Bibliothek zu lesen

https://github.com/databricks/spark-csv

Sys.setenv(SPARK_HOME = "C:/spark-2.0.0-bin-hadoop2.6") 

library(SparkR, lib.loc = c(file.path(Sys.getenv("SPARK_HOME"), "R", "lib"))) 

sparkR.session(master = "local[*]", appName = "SparkR") 

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

sqlContext <- sparkRSQL.init(sc) 

df <- read.df(sqlContext, "cars.csv", source = "com.databricks.spark.csv", inferSchema = "true") 
+0

Hallo Erick, danke für die Antwort. Aber wie ich sehe, hat Spark 2.0.0 native "csv" Unterstützung, weshalb ich versuchte zu erkunden, wie wir CSV-Dateien direkt "lesen" können. Außerdem verwendet Spark 2.0.0 jetzt die "SparkR.session" -Methode für die Initialisierung und die Verwendung von sqlContext ist veraltet. (Auf ihrer offiziellen Webseite sagen sie, dass man direkt mit Datenrahmen arbeiten kann, ohne sqlContext zu benutzen!) Ich bin irgendwie verloren, weil ich Fehler bekomme, wenn ich versuche, die Beispiele auszuführen. :( – AC24

+0

Spark-CSV wurde in der Tat in Spark2 zusammengeführt, mit einigen geringfügigen Änderungen. Das Paket sollte als Legacy-Software betrachtet werden - wie Ihr Github-Link auch angibt. –