2016-07-08 8 views
1

Ich versuche, Parkett-Dateien in SparkR zu lesen, die in Windows installiert ist. Wenn ich den folgenden Befehls all_tweets < Ausgabe - sammeln (read.parquet (SqlContext "hdfs: // localhost: 9000/orcladv/Internet/rawtweets"))SparkR in Windows

Ich erhalte einen Fehler Fehler bei invokeJava (isStatic = FALSE, objId $ id, Methodenname, ...): java.lang.AssertionError: Assertion fehlgeschlagen: Kein vordefiniertes Schema gefunden und keine Parquet-Datendateien oder Zusammenfassungsdateien gefunden unter Datei:/C:/Users/xxxxx/Documents/hdfs:/localhost: 9000/orcladv/internet/rawtweets.

at scala.Predef$.assert(Predef.scala:179) 

Ich bin mir nicht sicher, warum es Datei Präfixe:/C:/Users, wie es ein hdfs ist: // localhost: 9000

Bitte helfen ..

Dank

Bala

+0

Nicht verwandt, aber vielleicht nützlich für Sie ... seien Sie vorsichtig mit Collect(). Versuchen Sie, die Daten direkt aus der Parkettdatei in einen Spark DataFrame zu übertragen. Wenn Sie collect() verwenden, haben Sie den Spark DataFrame durchsucht und einen R data.frame erstellt, der in einem einzelnen Thread verarbeitet wird. Es nutzt nicht die verteilte Verarbeitungsleistung von Spark. Umgekehrt haben Sie, wenn Sie collect() aus Ihrem Code entfernen, einen Spark DataFrame erstellt, der multi-thread über den Cluster hinweg verarbeitet wird. Wenn Ihr Datensatz klein genug ist, um in R data.frame behandelt zu werden, warum sollten Sie Spark verwenden? – SpiritusPrana

+0

Danke Spiritus Prana. Ja, ich verstehe die Bedeutung des Sammelns. Für die Geschäftslogik in diesem Fall kann ich mit der collect() - Funktion sicherlich aufhören, da die Logik ziemlich an einer einzelnen Zeile arbeitet. Es muss keine Informationen aus anderen Zeilen verstehen, und in diesem Sinne schließen sich Zeilen gegenseitig aus. Wenn wir jedoch Spark ** R ** mehrmals verwenden, müssen wir einen seriellen Datenfluss durchführen. Dies könnte auf die Art des analytischen Prozesses zurückzuführen sein, den man ausführt. Nochmals vielen Dank für Ihre Vorsicht, in diesem Fall kann ich definitiv Collect() entfernen –

Antwort

0

Hilft this post? Es scheint verwandt zu sein und bietet einige Hinweise, wie man den richtigen hdfs Pfad findet.

Ändern Sie "localhost" auf den Wert in fs.defaultFS in Ihrer core-site.xml-Datei.

Wenn der hdfs-Pfad ungültig ist, scheint Spark davon auszugehen, dass er im lokalen Dateisystem suchen muss.

+0

Ich versuchte dies auch ohne Glück. Was ist überraschend ist a) der gleiche Code funktioniert in einer Linux-basierten Hadoop/Spark-Umgebung b) Woher erhält der Pfad den Präfix hdfs: //. –

+0

all_tweets <- read.parquet (sqlContext, "hdfs: /// localhost: 9000 // orcla 16/07/12 00:57:30 INFO parket.ParquetRelation: Auflistung hdfs: // localhost: 9000/C:/installs/spark-1.6.1-bin-hadoop2.6/bin/hdfs:/localhost: 9000/orcladv/internet/rawtweets auf Treiber 16/07/12 00:57:30 FEHLER r.RBackendHandler: Parkett auf 5 fehlgeschlagen Fehler in invokeJava (isStatic = FALSE, objId $ id, methodName, ...): java.lang.AssertionError: Assertion fehlgeschlagen: Kein vordefiniertes Schema gefunden und keine Parkettdaten .. unter hdfs: // localhost: 9000/C: /installs/spark-1.6.1-bin-h adoop2.6/bin/hdfs:/localhost: 9000/orcladv/internet/rawtweets –