Ich versuche, eine CSV-Datei zu lesen, die Backslash verwendet, um Trennzeichen zu entkommen, anstatt Anführungszeichen zu verwenden. Ich habe versucht, den DataFrameReader ohne Qoutes und mit einem Escape-Zeichen zu erstellen, aber es funktioniert nicht. Es scheint, dass die "Escape" -Option nur verwendet werden kann, um Anführungszeichen zu umgehen. Gibt es einen anderen Weg, als ein benutzerdefiniertes Eingabeformat zu erstellen?Spark 2.0 Scala - Lesen von CSV-Dateien mit Escapezeichen
Hier sind die Optionen, die ich jetzt bin mit:
spark.read.options(Map(
"sep" -> ",",
"encoding" -> "utf-8",
"quote" -> "",
"escape" -> "\\",
"mode" -> "PERMISSIVE",
"nullValue" -> ""
Für das Beispiel lassen sagen, dass wir die folgenden Beispieldaten haben:
Schema: Name, Stadt
Joe Bloggs,Dublin\,Ireland
Joseph Smith,Salt Lake City\,\
Utah
Das sollte 2 Datensätze zurückgeben:
Name | City
-----------------|---------------
Joe Bloggs | Dublin,Ireland
Joseph Smith | Salt Lake City,
Utah
Die Möglichkeit, Zeilenumbrüche zu umgehen, wäre zwar wünschenswert, aber es ist erforderlich, das Spaltentrennzeichen zu umgehen. Im Moment denke ich darüber nach, die Zeilen mit spark.textFile zu lesen und dann eine CSV-Bibliothek zu verwenden, um die einzelnen Zeilen zu analysieren. Das behebt das Problem mit dem Escape-Spaltentrennzeichen, aber nicht mit den Zeilentrennzeichen.
Können Sie ein Musterzeilenformat angeben? –
Ich denke, Sie haben Recht, bitte [Check] (https://github.com/databricks/spark-csv/blob/master/src/main/scala/com/databricks/spark/csv/package.scala) –
Beispiel Daten zur Frage hinzugefügt. –