2016-11-21 2 views
1

Ich mache gerade meine ersten Versuche mit Apache Spark. Ich möchte eine .csv-Datei mit einem SQLContext-Objekt lesen, aber Spark wird nicht die richtigen Ergebnisse liefern, da die Datei eine europäische ist (Komma als Dezimaltrennzeichen und Semikolon als Werttrennzeichen). Gibt es eine Möglichkeit, Spark anzuweisen, einer anderen CSV-Syntax zu folgen?.csv Daten im europäischen Format mit Spark lesen

val conf = new SparkConf() 
      .setMaster("local[8]") 
      .setAppName("Foo") 

val sc = new SparkContext(conf) 

val sqlContext = new SQLContext(sc) 

val df = sqlContext.read 
      .format("org.apache.spark.sql.execution.datasources.csv.CSVFileFormat") 
      .option("header","true") 
      .option("inferSchema","true") 
      .load("data.csv") 

df.show() 

Eine Reihe in der im Zusammenhang CSV sieht wie folgt aus:

04.10.2016;12:51:00;1,1;0,41;0,416 

Funken interpretiert die gesamte Zeile als eine Spalte. df.show() druckt:

+--------------------------------+ 
|Col1;Col2,Col3;Col4;Col5  | 
+--------------------------------+ 
|   04.10.2016;12:51:...| 
+--------------------------------+ 

In früheren Versuchen, es df.show() zu bekommen arbeitet Druck noch mehr Zeilen Inhalt sagt, wo es jetzt ‚...‘, aber schließlich die Zeile an dem Komma in der dritten Spalte zu schneiden.

Antwort

1

Sie können nur als Test lesen und teilen durch; oder setzen Sie ein benutzerdefiniertes Trennzeichen auf das CSV-Format wie in .option("delimiter",";")

+0

Das hat funktioniert! Danke vielmals! :) –

+0

Liest es die Zahlen mit Komma (',') als Dezimaltrennzeichen richtig ein? – Ahue