4

Ich benutze zwei Jupyter-Notebooks, um verschiedene Dinge in einer Analyse zu tun. In meinem Scala Notebook, schreibe ich einige meiner gereinigten Daten Parkett:Wie lese ich ein Parkett in PySpark geschrieben von Spark?

partitionedDF.select("noStopWords","lowerText","prediction").write.save("swift2d://xxxx.keystone/commentClusters.parquet") 

ich dann zu meinem Python Notebook gehe in den Daten zu lesen:

df = spark.read.load("swift2d://xxxx.keystone/commentClusters.parquet") 

und ich erhalte die folgenden Fehler:

Ich habe die Dokumentation von Funken untersucht und ich denke nicht, dass ich ein Schema angeben sollte. Ist jemand auf so etwas gestoßen? Sollte ich beim Speichern/Laden etwas anderes machen? Die Daten landen im Objektspeicher.

bearbeiten: Ich bin single funken 2.0 sowohl im Lesen und Schreiben.

edit2: Dies wurde in einem Projekt in Data Science Experience getan.

+1

Hier a [Kern] (https://gist.github.com/jtyberg/9f8480724634c764d3c73c8e989fa8f9) schreiben/eine Datenrahmen als Parkett-Datei lesen nach/von Swift. Es verwendet ein einfaches Schema (alle "String" -Typen). Wie lautet das Schema für Ihren DataFrame? Spark versucht, das Schema abzuleiten, aber "Derzeit werden numerische Datentypen und String-Typen unterstützt" (siehe http://spark.apache.org/docs/latest/sql-programming-guide.html#partition-discovery) – jtyberg

+0

I Ich glaube, du hast meine Frage beantwortet! Die Spalte "noStopWords" ist ein Vektor von Wörtern. Wie speichere/lade ich ein df mit dieser Spalte? –

Antwort

1

Sie können das Format parquet von Spark Session verwenden, um Parkettdateien zu lesen. Wie folgt aus:

df = spark.read.parquet("swift2d://xxxx.keystone/commentClusters.parquet") 

Zwar gibt es keinen Unterschied zwischen parquet und load Funktionen. Es kann sein, dass load nicht in der Lage ist, auf das Schema von Daten in der Datei zu schließen (z. B. ein Datentyp, der nicht durch load oder spezifisch für parquet identifiziert werden kann).

+0

Vielen Dank für das Feedback, aber das endete mit dem gleichen Fehler. Ich werde es weiter versuchen. –

+0

Hier gibt es ein Tutorial: http://datascience.ibm.com/blog/upload-files-to-ibm-data-science-experience-using-the-command-line-2/ – aruizga

5

Ich lese Parkett Datei auf folgende Weise:

from pyspark.sql import SparkSession 
# initialise sparkContext 
spark = SparkSession.builder \ 
    .master('local') \ 
    .appName('muthootSample1') \ 
    .config('spark.executor.memory', '5gb') \ 
    .config("spark.cores.max", "6") \ 
    .getOrCreate() 

sc = spark.sparkContext 

# using SQLContext to read parquet file 
from pyspark.sql import SQLContext 
sqlContext = SQLContext(sc) 

# to read parquet file 
df = sqlContext.read.parquet('path-to-file/commentClusters.parquet') 
Verwandte Themen