So Lesen Sie eine Datei mit fester Länge in Spark mit DataFrame API und SCALA
Ich habe eine Datei mit fester Länge ( siehe nachstehendes Beispiel) und ich möchte diese Datei zu Lesen, mithilfe von DataFrames API-Zündkerzen mit SCALA(nicht python oder java).
Mit DataFrames-API, es gibt Möglichkeiten zum Lesen von Text -, json-Datei und so weiter aber nicht sicher, ob es einen Weg gibt, zu Lesen, dass ein fixed-length-Datei. Ich suchte im internet und fand einen github -link, aber ich bekam zum download spark-fixedwidth-assembly-1.0.jar
für diesen Zweck jedoch war ich nicht in der Lage, herauszufinden, das Glas überall. Ich bin völlig verloren und hier und brauchen Ihre Anregungen und Hilfe. Es gibt einige Beiträge in Stackoverflow, aber Sie sind nicht relevant für Scala und DataFrame API.
Hier ist die Datei
56 apple TRUE 0.56
45 pear FALSE1.34
34 raspberry TRUE 2.43
34 plum TRUE 1.31
53 cherry TRUE 1.4
23 orange FALSE2.34
56 persimmon FALSE23.2
Feste Breite der einzelnen Spalten sind 3, 10, 5, 4
Bitte schlagen Sie uns Ihre Meinung.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gut... benutze substring Linien zu brechen. Dann trim zu entfernen wheitespaces. Und dann tun, was Sie wollen.
<console>:32: error: wrong number of parameters; expected = 1 val mapRDD=file.map(l => (l.substring(0, 4).trim(), l.substring(4, 14).trim(), l.substring(14,19).trim(), l.substring(19,23).trim())).map((e1, e2, e3, e4) => DataUnit(e1.toInt, e2, e3.toBoolean, e4.toDouble)).toDF ^
Fester Länge, format ist sehr alt, und ich konnte nicht finden eine gute Scala-Bibliothek für das format... so habe ich mein eigenes erstellt.
Sie können check it out hier: https://github.com/atais/Fixed-Length
Verwendung mit Spark ist ganz einfach, Sie bekommen würde ein
DataSet
Ihrer Objekte!Müssen Sie zunächst erstellen Sie eine Beschreibung der Objekte, fe:
Und später verwenden Sie einfach den parser: