2017-02-26 2 views
1

Ich möchte DF in eine Textdatei exportieren.SPARK SCALA DF in Textdatei exportieren

Es gibt zwei Probleme, es als Textdatei zu exportieren.

  1. Es hat 46 Spalten, und Fehlerprotokoll sagt Text unterstützt nur 1 Spalte.

  2. Ich möchte die Datei rollen fie bedeutet, ich möchte die gleiche Datei speichern das Ergebnis des nächsten Laufs.

Können Sie mir den Weg vorschlagen?

Antwort

2

Es gibt zwei Methoden zum Schreiben des Datenrahmens. Die einfachste Methode besteht darin, die Datei mit der Spark SQL-API zu schreiben, aber Sie können auch die RDD-API verwenden (beachten Sie, dass sie mit der RDD-API als einzelne Spalte ausgegeben wird).

In Bezug auf das Schreiben als rollende Datei, bin ich mir nicht sicher, ob das mit Spark möglich ist. Es würde erfordern, die vorherige Datei in Spark zu öffnen, die Daten zu verbinden und sie dann wieder auf die Festplatte zu schreiben. Es wäre wahrscheinlich besser, inkrementelle Dateinamen zu verwenden, die als eine einzelne Datei glob-geladen werden können.

Beispielcode für die DF als csv speichern:

val exampleDF = spark.read.option("header","true").option("inferSchema","true").format("csv").load("example.csv") 

exampleDF.write.csv("example.out") 

Spark-SQL DF Beispiel Ergebnisse:

1,0,3,Braund, Mr. Owen Harris,male,22.0,1,0,A/5 21171,7.25,null,S 
2,1,1,Cumings, Mrs. John Bradley (Florence Briggs Thayer),female,38.0,1,0,PC 17599,71.2833,C85,C 
3,1,3,Heikkinen, Miss. Laina,female,26.0,0,0,STON/O2. 3101282,7.925,null,S 
4,1,1,Futrelle, Mrs. Jacques Heath (Lily May Peel),female,35.0,1,0,113803,53.1,C123,S 



Beispielcode für die RDD als Text speichern:

val exampleDF = spark.read.option("header","true").option("inferSchema","true").format("csv").load("example.csv") 

exampleDF.rdd.saveAsTextFile("example.out") 

RDD Beispiel Ergebnisse:

[1,0,3,Braund, Mr. Owen Harris,male,22.0,1,0,A/5 21171,7.25,null,S] 
[2,1,1,Cumings, Mrs. John Bradley (Florence Briggs Thayer),female,38.0,1,0,PC 17599,71.2833,C85,C] 
[3,1,3,Heikkinen, Miss. Laina,female,26.0,0,0,STON/O2. 3101282,7.925,null,S] 
[4,1,1,Futrelle, Mrs. Jacques Heath (Lily May Peel),female,35.0,1,0,113803,53.1,C123,S]