2015-06-05 16 views
12

Ich möchte Daten in separate Textdateien exportieren; Ich kann es mit diesem Hack tun:Python Spark Dataframes: Bessere Möglichkeit, Gruppen in Textdatei zu exportieren

for r in sqlContext.sql("SELECT DISTINCT FIPS FROM MY_DF").map(lambda r: r.FIPS).collect(): 
    sqlContext.sql("SELECT * FROM MY_DF WHERE FIPS = '%s'" % r).rdd.saveAsTextFile('county_{}'.format(r)) 

Was ist der richtige Weg, es mit Spark 1.3.1/Python Datenrahmen zu tun? Ich möchte es in einem einzigen Job machen, im Gegensatz zu N (oder N + 1) Jobs.

können sein:

saveAsTextFileByKey()

+0

Es gibt eine Möglichkeit, dies in PySpark 1.4 + zu tun: http://Stackoverflow.com/a/37150604/877069 –

+0

Mögliche Duplikate von [Schreiben auf mehrere Ausgänge per Schlüssel Spark - ein Spark Job] (http://stackoverflow.com/questions/23995040/write-to-multiple-outputs-by-key-spark-one-spark-job) –

Antwort

2

Funken im Allgemeinen nicht über RDD Operationen mit mehreren Ausgängen. Aber zum Schreiben von Dateien gibt es einen netten Trick: Write to multiple outputs by key Spark - one Spark job

+0

Sorry, ich weiß nicht, ob das möglich ist von PySpark zu machen. Ich habe keine Erfahrung mit der Python-Schnittstelle. –

+0

Hey ja. Ich habe diesen Post gesehen, aber es war unklar, wie man auf der Python-Seite implementiert. – bcollins

+1

Es ist möglicherweise nicht möglich. Während PySpark den Großteil der Spark-API abdeckt, benötigen Sie auch Zugriff auf die Hadoop-Datei-API, damit dies funktioniert. Lass uns hoffen, dass dein Kopfgeld jemanden anzieht, der die Python API wirklich kennt! –

Verwandte Themen