2017-03-12 3 views
0

Unsere CSV-Datei hat das Format von^A als unser Spaltentrennzeichen und^B als unser Linientrennzeichen/Datensatzbegrenzer. Ich bin mit dem databricks Funken csv Bibliothek So ein Datenrahmen die folgende Art und Weise zu erstellen: für die Funken csv, in Bezug auf die Header-OptionDatabricks Spark CSV Header Delimiter

val dataFrame = cassSqlContext.read.format("com.databricks.spark.csv") 
     .option("header", "true").option("inferSchema", "true") 
     .option("delimiter", "\u0001").load(file) 

Mit Blick auf die Dokumentation, sagt es so: , wenn der erste auf true gesetzt Zeile von Dateien wird verwendet, um Spalten zu benennen und wird nicht in Daten enthalten. Alle Typen werden als String angenommen. Der Standardwert ist false.

Allerdings verwenden wir \ n nicht, sondern wir verwenden^B. So ist es eine Möglichkeit, die Funken csv Bibliothek zu sagen, dass unsere Header haben ein Trennzeichen als auch eher als der Standard \ n

+0

Ich fürchte, es gibt keine Möglichkeit, den Datensatzbegrenzer zu ändern, wenn CSV mit Spark analysiert wird. Auf einem Seitenknoten ist csv parsing nun Teil von spark (ab 2.0 wenn ich mich richtig erinnere). Sie können 'spark.read.csv ("/tmp/my.csv ")' – BenFradet

+0

Ja, aber derzeit verwenden wir Spark 1.6, aber ich habe eine Lösung gefunden – Ahmed

Antwort

1

konnte ich den obigen Code erhalten, indem arbeitet diese folgende Zeile für meinen sparkContext fügt hinzu:

sparkContext.hadoopConfiguration.set ("textinputformat.record.delimiter", "\ u0002")